33import responses
44
55from posit .connect import Client
6- from posit .connect .external .connect_api import ConnectAPIKeyProvider
6+ from posit .connect .external .connect_api import ViewerConnectClientProvider
77
88
99def register_mocks ():
@@ -29,24 +29,82 @@ def register_mocks():
2929
3030class TestConnectAPIKeyProvider :
3131 @responses .activate
32- @patch .dict ("os.environ" , {"RSTUDIO_PRODUCT" : "CONNECT" })
32+ @patch .dict (
33+ "os.environ" ,
34+ {
35+ "RSTUDIO_PRODUCT" : "CONNECT" ,
36+ "CONNECT_SERVER" : "http://connect.example/" ,
37+ "CONNECT_API_KEY" : "12345" ,
38+ },
39+ )
3340 def test_provider (self ):
3441 register_mocks ()
3542
43+ provider = ViewerConnectClientProvider (
44+ user_session_token = "cit" ,
45+ )
46+ viewer_client = provider .get_client ()
47+ assert viewer_client is not None
48+ assert viewer_client .cfg .url == "http://connect.example/"
49+ assert viewer_client .cfg .api_key == "viewer-api-key"
50+
51+ @responses .activate
52+ @patch .dict (
53+ "os.environ" ,
54+ {
55+ "RSTUDIO_PRODUCT" : "CONNECT" ,
56+ "CONNECT_SERVER" : "http://connect.example/" ,
57+ "CONNECT_API_KEY" : "12345" ,
58+ },
59+ )
60+ def test_provider_with_url_override (self ):
61+ register_mocks ()
62+
63+ provider = ViewerConnectClientProvider (
64+ user_session_token = "cit" ,
65+ url_override = "http://connect2.example/" ,
66+ )
67+ viewer_client = provider .get_client ()
68+ assert viewer_client is not None
69+ assert viewer_client .cfg .url == "http://connect2.example/"
70+ assert viewer_client .cfg .api_key == "viewer-api-key"
71+
72+ @responses .activate
73+ @patch .dict ("os.environ" , {"RSTUDIO_PRODUCT" : "CONNECT" })
74+ def test_provider_with_client_override (self ):
75+ register_mocks ()
76+
3677 client = Client (api_key = "12345" , url = "https://connect.example/" )
3778 client ._ctx .version = None
38- auth = ConnectAPIKeyProvider (
39- client = client ,
79+ provider = ViewerConnectClientProvider (
4080 user_session_token = "cit" ,
81+ client_override = client ,
4182 )
42- assert auth .viewer == "viewer-api-key"
83+ viewer_client = provider .get_client ()
84+ assert viewer_client is not None
85+ assert viewer_client .cfg .url == "http://connect.example/"
86+ assert viewer_client .cfg .api_key == "viewer-api-key"
4387
88+ @patch .dict (
89+ "os.environ" , {"CONNECT_SERVER" : "http://connect.example/" , "CONNECT_API_KEY" : "12345" }
90+ )
4491 def test_provider_fallback (self ):
45- # local_authenticator is used when the content is running locally
92+ # default client is used when the content is running locally
93+ provider = ViewerConnectClientProvider (
94+ user_session_token = "cit" ,
95+ )
96+ viewer_client = provider .get_client ()
97+ assert viewer_client .cfg .url == "https://connect.example/"
98+ assert viewer_client .cfg .api_key == "12345"
99+
100+ def test_provider_fallback_with_client_override (self ):
101+ # provided client is used when the content is running locally
46102 client = Client (api_key = "12345" , url = "https://connect.example/" )
47103 client ._ctx .version = None
48- auth = ConnectAPIKeyProvider (
49- client = client ,
104+ provider = ViewerConnectClientProvider (
50105 user_session_token = "cit" ,
106+ client_override = client ,
51107 )
52- assert auth .viewer is None
108+ viewer_client = provider .get_client ()
109+ assert viewer_client .cfg .url == "https://connect.example/"
110+ assert viewer_client .cfg .api_key == "12345"
0 commit comments