@@ -208,7 +208,7 @@ def test_param_validation_of_param_values_with_lists(self):
208208 }
209209 self .assertEqual (True , shopify .Session .validate_hmac (params ))
210210
211- def test_return_token_if_hmac_is_valid (self ):
211+ def test_return_token_and_scope_if_hmac_is_valid (self ):
212212 shopify .Session .secret = "secret"
213213 params = {"code" : "any-code" , "timestamp" : time .time ()}
214214 hmac = shopify .Session .calculate_hmac (params )
@@ -218,12 +218,13 @@ def test_return_token_if_hmac_is_valid(self):
218218 None ,
219219 url = "https://localhost.myshopify.com/admin/oauth/access_token" ,
220220 method = "POST" ,
221- body = '{"access_token" : "token"}' ,
221+ body = '{"access_token" : "token", "scope": "read_products,write_orders" }' ,
222222 has_user_agent = False ,
223223 )
224224 session = shopify .Session ("http://localhost.myshopify.com" , "unstable" )
225225 token = session .request_token (params )
226226 self .assertEqual ("token" , token )
227+ self .assertEqual (shopify .ApiAccess ("read_products,write_orders" ), session .access_scopes )
227228
228229 def test_raise_error_if_hmac_is_invalid (self ):
229230 shopify .Session .secret = "secret"
@@ -257,6 +258,32 @@ def test_raise_error_if_timestamp_is_too_old(self):
257258 session = shopify .Session ("http://localhost.myshopify.com" , "unstable" )
258259 session = session .request_token (params )
259260
261+ def test_access_scopes_are_nil_by_default (self ):
262+ session = shopify .Session ("testshop.myshopify.com" , "unstable" , "any-token" )
263+ self .assertIsNone (session .access_scopes )
264+
265+ def test_access_scopes_when_valid_scopes_passed_in (self ):
266+ session = shopify .Session (
267+ shop_url = "testshop.myshopify.com" ,
268+ version = "unstable" ,
269+ token = "any-token" ,
270+ access_scopes = "read_products, write_orders" ,
271+ )
272+
273+ expected_access_scopes = shopify .ApiAccess ("read_products, write_orders" )
274+ self .assertEqual (expected_access_scopes , session .access_scopes )
275+
276+ def test_access_scopes_set_with_api_access_object_passed_in (self ):
277+ session = shopify .Session (
278+ shop_url = "testshop.myshopify.com" ,
279+ version = "unstable" ,
280+ token = "any-token" ,
281+ access_scopes = shopify .ApiAccess ("read_products, write_orders" ),
282+ )
283+
284+ expected_access_scopes = shopify .ApiAccess ("read_products, write_orders" )
285+ self .assertEqual (expected_access_scopes , session .access_scopes )
286+
260287 def normalize_url (self , url ):
261288 scheme , netloc , path , query , fragment = urllib .parse .urlsplit (url )
262289 query = "&" .join (sorted (query .split ("&" )))
0 commit comments