RailsのコントローラのSSL・非SSLのときの振る舞いをテストするには request.env['HTTPS'] に 'on' か 'off' を代入すればいい。 describe SomeController do describe 'GET new' do context 'access using SSL' do before { request.env['HTTPS'] = 'on' } it do get :new # SSLでアクセスする end end context 'access not using SSL' do before { request.env['HTTPS'] = 'off' } # この中は非SSL end end end
![Rails+RspecでSSL・非SSLのテストするときはshared_context使うと捗る - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/efec8af09caf3ecfce6d02a8560be6158fe77fd2/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UmFpbHMlMkJSc3BlYyVFMyU4MSVBN1NTTCVFMyU4MyVCQiVFOSU5RCU5RVNTTCVFMyU4MSVBRSVFMyU4MyU4NiVFMyU4MiVCOSVFMyU4MyU4OCVFMyU4MSU5OSVFMyU4MiU4QiVFMyU4MSVBOCVFMyU4MSU4RCVFMyU4MSVBRnNoYXJlZF9jb250ZXh0JUU0JUJEJUJGJUUzJTgxJTg2JUUzJTgxJUE4JUU2JThEJTk3JUUzJTgyJThCJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zZWUwMzNlOTZkZGUyY2ZiNGMyYTRhOTkzNmU4MjM2OQ%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQweXVrdV90JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wMmFlNWVkODRhMDhhMzdlZDEzYzQ1NTJiZmJmYzE4OQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D705a1d62c06fde7c9674cbf3695197b5)