def test_redirects_to_proxy_protected_url_with_extra_path(self, spawner_mock): project = ProjectFactory(user=self.auth_client.user) notebook = NotebookJobFactory(project=project) notebook.set_status(status=JobLifeCycle.RUNNING) deployment_name = JOB_NAME.format( job_uuid=notebook.uuid.hex, name=self.plugin_app) service_url = self._get_service_url(deployment_name=deployment_name) mock_instance = spawner_mock.return_value mock_instance.get_notebook_url.return_value = service_url # To `tree?` response = self.auth_client.get(self._get_url(project, 'tree?')) assert response.status_code == 200 self.assertTrue(ProtectedView.NGINX_REDIRECT_HEADER in response) proxy_url = '{}/{}?token={}'.format( service_url, 'tree', notebook_scheduler.get_notebook_token(notebook) ) self.assertEqual(response[ProtectedView.NGINX_REDIRECT_HEADER], proxy_url) # To static files response = self.auth_client.get( self._get_url(project, 'static/components/something?v=4.7.0')) assert response.status_code == 200 self.assertTrue(ProtectedView.NGINX_REDIRECT_HEADER in response) proxy_url = '{}/{}&token={}'.format( service_url, 'static/components/something?v=4.7.0', notebook_scheduler.get_notebook_token(notebook) ) self.assertEqual(response[ProtectedView.NGINX_REDIRECT_HEADER], proxy_url)
def test_redirects_to_proxy_protected_url_with_extra_path( self, spawner_mock): project = ProjectFactory(user=self.auth_client.user) notebook = NotebookJobFactory(project=project) notebook.set_status(status=JobLifeCycle.RUNNING) deployment_name = JOB_NAME.format(job_uuid=notebook.uuid.hex, name=self.plugin_app) service_url = self._get_service_url(deployment_name=deployment_name) mock_instance = spawner_mock.return_value mock_instance.get_notebook_url.return_value = service_url # To `tree?` response = self.auth_client.get(self._get_url(project, 'tree?')) assert response.status_code == 200 self.assertTrue(ProtectedView.NGINX_REDIRECT_HEADER in response) proxy_url = '{}/{}?token={}'.format( service_url, 'tree', notebook_scheduler.get_notebook_token(notebook)) self.assertEqual(response[ProtectedView.NGINX_REDIRECT_HEADER], proxy_url) # To static files response = self.auth_client.get( self._get_url(project, 'static/components/something?v=4.7.0')) assert response.status_code == 200 self.assertTrue(ProtectedView.NGINX_REDIRECT_HEADER in response) proxy_url = '{}/{}&token={}'.format( service_url, 'static/components/something?v=4.7.0', notebook_scheduler.get_notebook_token(notebook)) self.assertEqual(response[ProtectedView.NGINX_REDIRECT_HEADER], proxy_url)
def test_redirects_to_proxy_protected_url(self, spawner_mock): project = ProjectFactory(user=self.auth_client.user) notebook = NotebookJobFactory(project=project) notebook.set_status(status=JobLifeCycle.RUNNING) deployment_name = DEPLOYMENT_NAME.format( job_uuid=notebook.uuid.hex, name=self.plugin_app) service_url = self._get_service_url(deployment_name=deployment_name) mock_instance = spawner_mock.return_value mock_instance.get_notebook_url.return_value = service_url response = self.auth_client.get(self._get_url(project)) assert response.status_code == 200 self.assertTrue(ProtectedView.NGINX_REDIRECT_HEADER in response) proxy_url = '{}/{}?token={}'.format( service_url, 'tree', notebook_scheduler.get_notebook_token(notebook) ) self.assertEqual(response[ProtectedView.NGINX_REDIRECT_HEADER], proxy_url)
def get_base_params(project): from scheduler import notebook_scheduler return 'token={}'.format( notebook_scheduler.get_notebook_token(notebook=project.notebook))
def get_base_params(instance): from scheduler import notebook_scheduler return 'token={}'.format( notebook_scheduler.get_notebook_token(notebook=instance.notebook))