@@ -752,3 +752,56 @@ func TestCorsAreHeadersAllowed(t *testing.T) {
752
752
})
753
753
}
754
754
}
755
+
756
+ func TestAccessControlExposeHeadersPresence (t * testing.T ) {
757
+ cases := []struct {
758
+ name string
759
+ options Options
760
+ want bool
761
+ }{
762
+ {
763
+ name : "omit" ,
764
+ options : Options {},
765
+ want : false ,
766
+ },
767
+ {
768
+ name : "include" ,
769
+ options : Options {
770
+ ExposedHeaders : []string {"X-Something" },
771
+ },
772
+ want : true ,
773
+ },
774
+ }
775
+
776
+ for _ , tt := range cases {
777
+ t .Run (tt .name , func (t * testing.T ) {
778
+ s := New (tt .options )
779
+
780
+ req , _ := http .NewRequest ("GET" , "http://example.com/foo" , nil )
781
+ req .Header .Add ("Origin" , "http://foobar.com" )
782
+
783
+ assertExposeHeaders := func (t * testing.T , resHeaders http.Header ) {
784
+ if _ , have := resHeaders ["Access-Control-Expose-Headers" ]; have != tt .want {
785
+ t .Errorf ("Access-Control-Expose-Headers have: %t want: %t" , have , tt .want )
786
+ }
787
+ }
788
+
789
+ t .Run ("Handler" , func (t * testing.T ) {
790
+ res := httptest .NewRecorder ()
791
+ s .Handler (testHandler ).ServeHTTP (res , req )
792
+ assertExposeHeaders (t , res .Header ())
793
+ })
794
+ t .Run ("HandlerFunc" , func (t * testing.T ) {
795
+ res := httptest .NewRecorder ()
796
+ s .HandlerFunc (res , req )
797
+ assertExposeHeaders (t , res .Header ())
798
+ })
799
+ t .Run ("Negroni" , func (t * testing.T ) {
800
+ res := httptest .NewRecorder ()
801
+ s .ServeHTTP (res , req , testHandler )
802
+ assertExposeHeaders (t , res .Header ())
803
+ })
804
+ })
805
+ }
806
+
807
+ }
0 commit comments