示例#1
0
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
示例#3
0
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)
示例#4
0
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)
示例#5
0
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()
示例#9
0
def users(db):
    print("Setting up users...")
    User(auth0_id="github|1", username="******").save()
    User(auth0_id="github|2", username="******").save()
示例#10
0
def test_k8s_namespace():
    user = User(username='******')
    assert user.k8s_namespace == 'user-alice'