@@ -25,20 +25,20 @@ def setup
2525
2626 @jwt_token = JWT . encode ( @jwt_payload , ShopifyAPI ::Context . api_secret_key , "HS256" )
2727 @auth_header = "Bearer #{ @jwt_token } "
28+ @expected_online_session_id = "#{ @shop } _#{ @user_id } "
29+ @expected_offline_session_id = "offline_#{ @shop } "
2830 end
2931
3032 def test_gets_online_session_id_from_shopify_id_token
31- expected_session_id = "#{ @shop } _#{ @user_id } "
3233 assert_equal (
33- expected_session_id ,
34+ @expected_online_session_id ,
3435 ShopifyAPI ::Utils ::SessionUtils . session_id_from_shopify_id_token ( id_token : @jwt_token , online : true ) ,
3536 )
3637 end
3738
3839 def test_gets_offline_session_id_from_shopify_id_token
39- expected_session_id = "offline_#{ @shop } "
4040 assert_equal (
41- expected_session_id ,
41+ @expected_offline_session_id ,
4242 ShopifyAPI ::Utils ::SessionUtils . session_id_from_shopify_id_token ( id_token : @jwt_token , online : false ) ,
4343 )
4444 end
@@ -50,11 +50,16 @@ def test_session_id_from_shopify_id_token_raises_invalid_jwt_errors
5050 end
5151
5252 def test_session_id_from_shopify_id_token_raises_missing_jwt_token_error
53- error = assert_raises ( ShopifyAPI ::Errors ::MissingJwtTokenError ) do
54- ShopifyAPI ::Utils ::SessionUtils . session_id_from_shopify_id_token ( id_token : nil , online : true )
55- end
53+ [
54+ nil ,
55+ "" ,
56+ ] . each do |missing_jwt |
57+ error = assert_raises ( ShopifyAPI ::Errors ::MissingJwtTokenError ) do
58+ ShopifyAPI ::Utils ::SessionUtils . session_id_from_shopify_id_token ( id_token : missing_jwt , online : true )
59+ end
5660
57- assert_equal ( "Missing Shopify ID Token" , error . message )
61+ assert_equal ( "Missing Shopify ID Token" , error . message )
62+ end
5863 end
5964
6065 def test_non_embedded_app_current_session_id_raises_cookie_not_found_error
@@ -98,43 +103,71 @@ def test_embedded_app_current_session_id_raises_cookie_not_found_error
98103 end
99104 end
100105
106+ def test_embedded_app_current_session_id_raises_invalid_jwt_token_error
107+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
108+ [
109+ "Bearer invalid_token" ,
110+ "Bearer" ,
111+ "invalid_token" ,
112+ ] . each do |invalid_token |
113+ assert_raises ( ShopifyAPI ::Errors ::InvalidJwtTokenError , " - #{ invalid_token } " ) do
114+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( invalid_token , nil , true )
115+ end
116+ end
117+ end
118+
101119 def test_embedded_app_current_session_id_raises_missing_jwt_token_error
102120 ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
103121
104122 error = assert_raises ( ShopifyAPI ::Errors ::MissingJwtTokenError ) do
105123 ShopifyAPI ::Utils ::SessionUtils . current_session_id ( "" , nil , true )
106124 end
107125
108- assert_equal ( "Missing Bearer token in authorization header " , error . message )
126+ assert_equal ( "Missing Shopify ID Token " , error . message )
109127 end
110128
111129 def test_embedded_app_current_session_id_returns_online_id_from_auth_header
112130 ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
113- expected_session_id = "#{ @shop } _#{ @user_id } "
114131
115132 assert_equal (
116- expected_session_id ,
133+ @expected_online_session_id ,
117134 ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @auth_header , nil , true ) ,
118135 )
119136 end
120137
121138 def test_embedded_app_current_session_id_returns_offline_id_from_auth_header
122139 ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
123- expected_session_id = "offline_#{ @shop } "
124140
125141 assert_equal (
126- expected_session_id ,
142+ @expected_offline_session_id ,
127143 ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @auth_header , nil , false ) ,
128144 )
129145 end
130146
147+ def test_embedded_app_current_session_id_returns_online_id_from_shopify_id_token
148+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
149+
150+ assert_equal (
151+ @expected_online_session_id ,
152+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @jwt_token , nil , true ) ,
153+ )
154+ end
155+
156+ def test_embedded_app_current_session_id_returns_offline_id_from_shopify_id_token
157+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
158+
159+ assert_equal (
160+ @expected_offline_session_id ,
161+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @jwt_token , nil , false ) ,
162+ )
163+ end
164+
131165 def test_embedded_app_current_session_id_returns_id_from_auth_header_even_with_cookies
132166 ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
133167 cookies = { ShopifyAPI ::Auth ::Oauth ::SessionCookie ::SESSION_COOKIE_NAME => "cookie_value" }
134- expected_session_id = "#{ @shop } _#{ @user_id } "
135168
136169 assert_equal (
137- expected_session_id ,
170+ @expected_online_session_id ,
138171 ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @auth_header , cookies , true ) ,
139172 )
140173 end
0 commit comments