@@ -24,6 +24,7 @@ def setup
2424 }
2525
2626 @jwt_token = JWT . encode ( @jwt_payload , ShopifyAPI ::Context . api_secret_key , "HS256" )
27+ @auth_header = "Bearer #{ @jwt_token } "
2728 end
2829
2930 def test_gets_online_session_id_from_shopify_id_token
@@ -47,6 +48,88 @@ def test_session_id_from_shopify_id_token_raises_invalid_jwt_errors
4748 ShopifyAPI ::Utils ::SessionUtils . session_id_from_shopify_id_token ( id_token : "invalid_token" , online : true )
4849 end
4950 end
51+
52+ def test_non_embedded_app_current_session_id_raises_cookie_not_found_error
53+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( false )
54+
55+ [
56+ nil ,
57+ { } ,
58+ { "not-session-cookie-name" : "not-this-cookie" } ,
59+ ] . each do |cookies |
60+ error = assert_raises ( ShopifyAPI ::Errors ::CookieNotFoundError ) do
61+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( nil , cookies , true )
62+ end
63+ assert_equal ( "Session cookie not found for app" , error . message )
64+ end
65+ end
66+
67+ def test_non_embedded_app_current_session_id_returns_id_from_cookie
68+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( false )
69+ expected_session_id = "cookie_value"
70+ cookies = { ShopifyAPI ::Auth ::Oauth ::SessionCookie ::SESSION_COOKIE_NAME => expected_session_id }
71+
72+ assert_equal (
73+ expected_session_id ,
74+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( nil , cookies , true ) ,
75+ )
76+ end
77+
78+ def test_embedded_app_current_session_id_raises_cookie_not_found_error
79+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
80+
81+ [
82+ nil ,
83+ { } ,
84+ { "not-session-cookie-name" : "not-this-cookie" } ,
85+ ] . each do |cookies |
86+ error = assert_raises ( ShopifyAPI ::Errors ::CookieNotFoundError ) do
87+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( nil , cookies , true )
88+ end
89+ assert_equal ( "JWT token or Session cookie not found for app" , error . message )
90+ end
91+ end
92+
93+ def test_embedded_app_current_session_id_raises_missing_jwt_token_error
94+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
95+
96+ error = assert_raises ( ShopifyAPI ::Errors ::MissingJwtTokenError ) do
97+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( "" , nil , true )
98+ end
99+
100+ assert_equal ( "Missing Bearer token in authorization header" , error . message )
101+ end
102+
103+ def test_embedded_app_current_session_id_returns_online_id_from_auth_header
104+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
105+ expected_session_id = "#{ @shop } _#{ @user_id } "
106+
107+ assert_equal (
108+ expected_session_id ,
109+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @auth_header , nil , true ) ,
110+ )
111+ end
112+
113+ def test_embedded_app_current_session_id_returns_offline_id_from_auth_header
114+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
115+ expected_session_id = "offline_#{ @shop } "
116+
117+ assert_equal (
118+ expected_session_id ,
119+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @auth_header , nil , false ) ,
120+ )
121+ end
122+
123+ def test_embedded_app_current_session_id_returns_id_from_auth_header_even_with_cookies
124+ ShopifyAPI ::Context . stubs ( :embedded? ) . returns ( true )
125+ cookies = { ShopifyAPI ::Auth ::Oauth ::SessionCookie ::SESSION_COOKIE_NAME => "cookie_value" }
126+ expected_session_id = "#{ @shop } _#{ @user_id } "
127+
128+ assert_equal (
129+ expected_session_id ,
130+ ShopifyAPI ::Utils ::SessionUtils . current_session_id ( @auth_header , cookies , true ) ,
131+ )
132+ end
50133 end
51134 end
52135end
0 commit comments