def test_bulk_migration_update(users): """ Given a list of users, check the bulk_migration_update results in the expected new migration state. """ user = User.objects.get(username="******") old_state = user.migration_state usernames = [ user.username, ] new_state = User.PENDING User.bulk_migration_update(usernames, new_state) user = User.objects.get(username="******") assert user.migration_state == new_state
def test_home_directory_get_status(): user = User(username="******") hd = HomeDirectory(user) cluster.HOME_RESETTING = "Resetting" hd._poll = MagicMock(return_value=cluster.HOME_RESETTING) hd._subprocess = True assert hd.get_status() == cluster.HOME_RESETTING
def test_update_tool_status(): tool = Tool(chart_name="a_tool", version="v1.0.0") user = User(auth0_id="github|123") id_token = "user id_token" status = TOOL_UPGRADED app_version = "R: 42, Python: 2.0.0" tool_deployment = Mock() tool_deployment.tool = tool tool_deployment.user = user tool_deployment.get_installed_app_version.return_value = app_version expected_sse_event = { "event": "toolStatus", "data": json.dumps({ "toolName": tool.chart_name, "version": tool.version, "appVersion": app_version, "status": status, }), } with patch("controlpanel.frontend.consumers.send_sse") as send_sse: consumers.update_tool_status( tool_deployment, id_token, status, ) tool_deployment.get_installed_app_version.assert_called_with(id_token) send_sse.assert_called_with(user.auth0_id, expected_sse_event)
def test_tool_deployment_outdated(cluster, chart_version, expected_outdated): tool = Tool(chart_name="test-tool", version="1.0.0") user = User(username="******") td = ToolDeployment(tool, user) id_token = "dummy" cluster_td = cluster.ToolDeployment.return_value cluster_td.get_installed_chart_version.return_value = chart_version assert td.outdated(id_token) == expected_outdated cluster.ToolDeployment.assert_called_with(user, tool) cluster_td.get_installed_chart_version.assert_called_with(id_token)
def test_tool_deployment_get_installed_app_version(helm_repository_index, cluster, chart_version, expected_app_version): tool = Tool(chart_name="rstudio") user = User(username="******") td = ToolDeployment(tool, user) id_token = "dummy" cluster_td = cluster.ToolDeployment.return_value cluster_td.get_installed_chart_version.return_value = chart_version assert td.get_installed_app_version(id_token) == expected_app_version cluster.ToolDeployment.assert_called_with(user, tool) cluster_td.get_installed_chart_version.assert_called_with(id_token)
def test_url(): """ Ensures the URL for the tool release is properly constructed either from the chart_name or, if present, the tool_domain. """ user = User(username="******") tool = Tool( name="RStudio", chart_name="rstudio", version="1.0.0", ) expected = f"https://{user.slug}-rstudio.{settings.TOOLS_DOMAIN}/" # In the absence of a tool_domain, the chart_name (rstudio) is used. assert tool.url(user) == expected tool.chart_name = "rstudio-bespoke" tool.tool_domain = "rstudio" # Now the chart_name is custom, the tool_domain (rstudio) is used, ensuring # the url remains "valid". assert tool.url(user) == expected
def test_get_installed_chart_version(): user = User(username="******") tool = Tool(chart_name="test-chart") id_token = "dummy" installed_chart_version = "1.2.3" td = ToolDeployment(user, tool) deploy_metadata = Mock("k8s Deployment - metadata") deploy_metadata.labels = { "chart": f"{tool.chart_name}-{installed_chart_version}" } deploy = Mock("k8s Deployment", metadata=deploy_metadata) with patch("controlpanel.api.cluster.ToolDeployment.get_deployment" ) as get_deployment: get_deployment.return_value = deploy assert td.get_installed_chart_version( id_token) == installed_chart_version get_deployment.assert_called_with(id_token)
def test_home_directory_reset(cluster): user = User(username="******") hd = HomeDirectory(user) hd.reset() assert hd._subprocess == cluster.User(user).reset_home()
def users(db): print("Setting up users...") User(auth0_id="github|1", username="******").save() User(auth0_id="github|2", username="******").save()
def test_k8s_namespace(): user = User(username='******') assert user.k8s_namespace == 'user-alice'