@@ -804,6 +804,106 @@ class TestRackSslEnforcer < Test::Unit::TestCase
804
804
end
805
805
end
806
806
807
+ context ':only_environments (String)' do
808
+ setup { mock_app :only_environments => 'production' }
809
+
810
+ should 'redirect to HTTPS for "production" environment' do
811
+ ENV [ "RACK_ENV" ] = "production"
812
+ get 'http://www.example.org/'
813
+ assert_equal 301 , last_response . status
814
+ assert_equal 'https://www.example.org/' , last_response . location
815
+ end
816
+
817
+ should 'not redirect for "development" environment' do
818
+ ENV [ "RACK_ENV" ] = "development"
819
+ get 'http://www.example.org/'
820
+ assert_equal 200 , last_response . status
821
+ assert_equal 'Hello world!' , last_response . body
822
+ end
823
+ end
824
+
825
+ context ':only_environments (Array + Regex)' do
826
+ setup { mock_app :only_environments => [ 'production' , /QA\d +/ ] }
827
+
828
+ should 'redirect to HTTPS for "production" environment' do
829
+ ENV [ "RACK_ENV" ] = "production"
830
+ get 'http://www.example.org/'
831
+ assert_equal 301 , last_response . status
832
+ assert_equal 'https://www.example.org/' , last_response . location
833
+ end
834
+
835
+ should 'redirect to HTTPS for "QA2" environment' do
836
+ ENV [ "RACK_ENV" ] = "QA2"
837
+ get 'http://www.example.org/'
838
+ assert_equal 301 , last_response . status
839
+ assert_equal 'https://www.example.org/' , last_response . location
840
+ end
841
+
842
+ should 'redirect to HTTPS for "QA15" environment' do
843
+ ENV [ "RACK_ENV" ] = "QA15"
844
+ get 'http://www.example.org/'
845
+ assert_equal 301 , last_response . status
846
+ assert_equal 'https://www.example.org/' , last_response . location
847
+ end
848
+
849
+ should 'not redirect for "development" environment' do
850
+ ENV [ "RACK_ENV" ] = "development"
851
+ get 'http://www.example.org/'
852
+ assert_equal 200 , last_response . status
853
+ assert_equal 'Hello world!' , last_response . body
854
+ end
855
+ end
856
+
857
+ context ':except_environments (String)' do
858
+ setup { mock_app :except_environments => 'development' }
859
+
860
+ should 'redirect to HTTPS for "production" environment' do
861
+ ENV [ "RACK_ENV" ] = "production"
862
+ get 'http://www.example.org/'
863
+ assert_equal 301 , last_response . status
864
+ assert_equal 'https://www.example.org/' , last_response . location
865
+ end
866
+
867
+ should 'not redirect for "development" environment' do
868
+ ENV [ "RACK_ENV" ] = "development"
869
+ get 'http://www.example.org/'
870
+ assert_equal 200 , last_response . status
871
+ assert_equal 'Hello world!' , last_response . body
872
+ end
873
+ end
874
+
875
+ context ':except_environments (Array + Regex)' do
876
+ setup { mock_app :except_environments => [ 'development' , /\w +_local/ ] }
877
+
878
+ should 'redirect to HTTPS for "production" environment' do
879
+ ENV [ "RACK_ENV" ] = "production"
880
+ get 'http://www.example.org/'
881
+ assert_equal 301 , last_response . status
882
+ assert_equal 'https://www.example.org/' , last_response . location
883
+ end
884
+
885
+ should 'not redirect for "development" environment' do
886
+ ENV [ "RACK_ENV" ] = "development"
887
+ get 'http://www.example.org/'
888
+ assert_equal 200 , last_response . status
889
+ assert_equal 'Hello world!' , last_response . body
890
+ end
891
+
892
+ should 'not redirect for "jebediah_local" environment' do
893
+ ENV [ "RACK_ENV" ] = "jebediah_local"
894
+ get 'http://www.example.org/'
895
+ assert_equal 200 , last_response . status
896
+ assert_equal 'Hello world!' , last_response . body
897
+ end
898
+
899
+ should 'not redirect for "el_guapo_local" environment' do
900
+ ENV [ "RACK_ENV" ] = "el_guapo_local"
901
+ get 'http://www.example.org/'
902
+ assert_equal 200 , last_response . status
903
+ assert_equal 'Hello world!' , last_response . body
904
+ end
905
+ end
906
+
807
907
context 'complex example' do
808
908
setup { mock_app :only => '/cart' , :ignore => %r{/assets} , :strict => true }
809
909
0 commit comments