1919# limitations under the License.
2020"""Test Cross-Origin Resource Sharing (CORS) Headers
2121"""
22+ import d1_common
2223import freezegun
2324import responses
2425
2526import d1_gmn .tests .gmn_mock
2627import d1_gmn .tests .gmn_test_case
2728
2829import d1_test .d1_test_case
30+ import d1_common .const
2931
3032
3133@d1_test .d1_test_case .reproducible_random_decorator ('TestCors' )
32- @freezegun .freeze_time ('1961 -01-02' )
34+ @freezegun .freeze_time ('1981 -01-02' )
3335class TestCors (d1_gmn .tests .gmn_test_case .GMNTestCase ):
3436 @responses .activate
3537 def test_1000 (self , gmn_client_v1_v2 ):
@@ -81,6 +83,16 @@ def test_1050(self, gmn_client_v1_v2):
8183 response = gmn_client_v1_v2 .OPTIONS (['object' , pid ])
8284 self .sample .assert_equals (response , 'get_options' , gmn_client_v1_v2 )
8385
86+
87+ @responses .activate
88+ def test_1051 (self , gmn_client_v2 ):
89+ """getPackage(): OPTIONS request returns expected headers"""
90+ pid_list = self .create_multiple_objects (gmn_client_v2 , object_count = 2 )
91+ ore_pid = self .create_resource_map (gmn_client_v2 , pid_list )
92+ response = gmn_client_v2 .OPTIONS (['packages' , d1_common .const .DEFAULT_DATA_PACKAGE_FORMAT_ID , ore_pid ])
93+ self .sample .assert_equals (response , 'get_package_options' , gmn_client_v2 )
94+
95+
8496 @responses .activate
8597 def test_1060 (self , gmn_client_v1_v2 ):
8698 """Invalid method against endpoint raises 405 Method Not Allowed and returns
@@ -89,3 +101,26 @@ def test_1060(self, gmn_client_v1_v2):
89101 with d1_gmn .tests .gmn_mock .disable_auth ():
90102 response = gmn_client_v1_v2 .PUT (['object' ])
91103 self .sample .assert_equals (response , 'put_object_list' , gmn_client_v1_v2 )
104+
105+
106+ @responses .activate
107+ def test_1061 (self , gmn_client_v1_v2 ):
108+ """get(): WITHOUT Origin header sets Access-Control-Allow-Origin to wildcard
109+ """
110+ pid , sid , sciobj_bytes , sysmeta_pyxb = self .create_obj (gmn_client_v1_v2 )
111+ with d1_gmn .tests .gmn_mock .disable_auth ():
112+ response = gmn_client_v1_v2 .get (pid )
113+ self .sample .assert_equals (response .headers , 'get_without_origin' , gmn_client_v1_v2 )
114+ assert response .headers ['Access-Control-Allow-Origin' ] == '*'
115+
116+
117+ @responses .activate
118+ def test_1062 (self , gmn_client_v1_v2 ):
119+ """get(): WITH Origin header sets Access-Control-Allow-Origin to the Origin
120+ """
121+ pid , sid , sciobj_bytes , sysmeta_pyxb = self .create_obj (gmn_client_v1_v2 )
122+ origin_url = 'https://somewhere.com'
123+ with d1_gmn .tests .gmn_mock .disable_auth ():
124+ response = gmn_client_v1_v2 .get (pid , vendorSpecific = {'Origin' : origin_url })
125+ self .sample .assert_equals (response .headers , 'get_with_origin' , gmn_client_v1_v2 )
126+ assert response .headers ['Access-Control-Allow-Origin' ] == origin_url
0 commit comments