Skip to content

Commit dc239a4

Browse files
committed
ADd notebook impersonate login auth
1 parent 09cc8c7 commit dc239a4

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

polyaxon_client/api/auth.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,19 @@ def login_job_impersonate_token(self,
192192
internal_token=internal_token,
193193
set_token=set_token,
194194
persist_token=persist_token)
195+
196+
def login_notebook_impersonate_token(self,
197+
username,
198+
project_name,
199+
internal_token,
200+
set_token=True,
201+
persist_token=True):
202+
request_url = self.build_url(self._get_http_url('/'),
203+
username,
204+
project_name,
205+
'notebook',
206+
'imporsonatetoken')
207+
return self._login_impersonate_token(request_url=request_url,
208+
internal_token=internal_token,
209+
set_token=set_token,
210+
persist_token=persist_token)

tests/test_api/test_auth.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,45 @@ def test_login_job_impersonate_token(self):
230230
persist_token=True)
231231
assert self.api_config.token == token
232232
assert os.path.exists(settings.CONTEXT_AUTH_TOKEN_PATH) is True
233+
234+
@httpretty.activate
235+
def test_login_notebook_impersonate_token(self):
236+
token = uuid.uuid4().hex
237+
httpretty.register_uri(
238+
httpretty.POST,
239+
BaseApiHandler.build_url(
240+
self.api_config.base_url,
241+
'/',
242+
'user',
243+
'project',
244+
'notebook',
245+
'imporsonatetoken'
246+
),
247+
body=json.dumps({'token': token}),
248+
content_type='application/json', status=200)
249+
250+
# Login without updating the token and without persistence
251+
if os.path.exists(settings.CONTEXT_AUTH_TOKEN_PATH):
252+
os.remove(settings.CONTEXT_AUTH_TOKEN_PATH)
253+
assert self.api_config.token == 'token'
254+
assert token == self.api_handler.login_notebook_impersonate_token(
255+
username='user',
256+
project_name='project',
257+
internal_token='foo',
258+
set_token=False,
259+
persist_token=False)
260+
assert self.api_config.token == 'token'
261+
assert os.path.exists(settings.CONTEXT_AUTH_TOKEN_PATH) is False
262+
263+
# Login and update the token and persistence
264+
if os.path.exists(settings.CONTEXT_AUTH_TOKEN_PATH):
265+
os.remove(settings.CONTEXT_AUTH_TOKEN_PATH)
266+
assert self.api_config.token == 'token'
267+
assert token == self.api_handler.login_notebook_impersonate_token(
268+
username='user',
269+
project_name='project',
270+
internal_token='foo',
271+
set_token=True,
272+
persist_token=True)
273+
assert self.api_config.token == token
274+
assert os.path.exists(settings.CONTEXT_AUTH_TOKEN_PATH) is True

0 commit comments

Comments
 (0)