Example #1
0
def test_mark_namespace_for_deletion(initialized_db):
    def create_transaction(db):
        return db.transaction()

    # Create a user and then mark it for deletion.
    user = create_user_noverify("foobar",
                                "*****@*****.**",
                                email_required=False)

    # Add some robots.
    create_robot("foo", user)
    create_robot("bar", user)

    assert lookup_robot("foobar+foo") is not None
    assert lookup_robot("foobar+bar") is not None
    assert len(list(list_namespace_robots("foobar"))) == 2

    # Add some federated user links.
    attach_federated_login(user, "google", "someusername")
    attach_federated_login(user, "github", "someusername")
    assert FederatedLogin.select().where(
        FederatedLogin.user == user).count() == 2
    assert FederatedLogin.select().where(
        FederatedLogin.service_ident == "someusername").exists()

    # Mark the user for deletion.
    queue = WorkQueue("testgcnamespace", create_transaction)
    mark_namespace_for_deletion(user, [], queue)

    # Ensure the older user is still in the DB.
    older_user = User.get(id=user.id)
    assert older_user.username != "foobar"

    # Ensure the robots are deleted.
    with pytest.raises(InvalidRobotException):
        assert lookup_robot("foobar+foo")

    with pytest.raises(InvalidRobotException):
        assert lookup_robot("foobar+bar")

    assert len(list(list_namespace_robots(older_user.username))) == 0

    # Ensure the federated logins are gone.
    assert FederatedLogin.select().where(
        FederatedLogin.user == user).count() == 0
    assert (not FederatedLogin.select().where(
        FederatedLogin.service_ident == "someusername").exists())

    # Ensure we can create a user with the same namespace again.
    new_user = create_user_noverify("foobar",
                                    "*****@*****.**",
                                    email_required=False)
    assert new_user.id != user.id

    # Ensure the older user is still in the DB.
    assert User.get(id=user.id).username != "foobar"
Example #2
0
def test_mark_namespace_for_deletion(initialized_db):
    def create_transaction(db):
        return db.transaction()

    # Create a user and then mark it for deletion.
    user = create_user_noverify("foobar",
                                "*****@*****.**",
                                email_required=False)

    # Add some robots.
    create_robot("foo", user)
    create_robot("bar", user)

    assert lookup_robot("foobar+foo") is not None
    assert lookup_robot("foobar+bar") is not None
    assert len(list(list_namespace_robots("foobar"))) == 2

    # Mark the user for deletion.
    queue = WorkQueue("testgcnamespace", create_transaction)
    mark_namespace_for_deletion(user, [], queue)

    # Ensure the older user is still in the DB.
    older_user = User.get(id=user.id)
    assert older_user.username != "foobar"

    # Ensure the robots are deleted.
    with pytest.raises(InvalidRobotException):
        assert lookup_robot("foobar+foo")

    with pytest.raises(InvalidRobotException):
        assert lookup_robot("foobar+bar")

    assert len(list(list_namespace_robots(older_user.username))) == 0

    # Ensure we can create a user with the same namespace again.
    new_user = create_user_noverify("foobar",
                                    "*****@*****.**",
                                    email_required=False)
    assert new_user.id != user.id

    # Ensure the older user is still in the DB.
    assert User.get(id=user.id).username != "foobar"
Example #3
0
def test_delete_robot(initialized_db):
  # Create a robot account.
  user = create_user_noverify('foobar', '*****@*****.**', email_required=False)
  robot, _ = create_robot('foo', user)

  # Add some notifications and other rows pointing to the robot.
  create_notification('repo_push', robot)

  team = create_team('someteam', get_organization('buynlarge'), 'member')
  add_user_to_team(robot, team)

  # Ensure the robot exists.
  assert lookup_robot(robot.username).id == robot.id

  # Delete the robot.
  delete_robot(robot.username)

  # Ensure it is gone.
  with pytest.raises(InvalidRobotException):
    lookup_robot(robot.username)
Example #4
0
def create_repository_build(repo,
                            access_token,
                            job_config_obj,
                            dockerfile_id,
                            display_name,
                            trigger=None,
                            pull_robot_name=None):
    pull_robot = None
    if pull_robot_name:
        pull_robot = user_model.lookup_robot(pull_robot_name)

    return RepositoryBuild.create(repository=repo,
                                  access_token=access_token,
                                  job_config=json.dumps(job_config_obj),
                                  display_name=display_name,
                                  trigger=trigger,
                                  resource_key=dockerfile_id,
                                  pull_robot=pull_robot)
Example #5
0
def test_robot(initialized_db):
  # Create a robot account.
  user = create_user_noverify('foobar', '*****@*****.**', email_required=False)
  robot, token = create_robot('foo', user)
  assert retrieve_robot_token(robot) == token

  # Ensure we can retrieve its information.
  found = lookup_robot('foobar+foo')
  assert found == robot

  creds = get_pull_credentials('foobar+foo')
  assert creds is not None
  assert creds['username'] == 'foobar+foo'
  assert creds['password'] == token

  assert verify_robot('foobar+foo', token) == robot

  with pytest.raises(InvalidRobotException):
    assert verify_robot('foobar+foo', 'someothertoken')

  with pytest.raises(InvalidRobotException):
    assert verify_robot('foobar+unknownbot', token)
Example #6
0
def test_robot(initialized_db):
    # Create a robot account.
    user = create_user_noverify("foobar",
                                "*****@*****.**",
                                email_required=False)
    robot, token = create_robot("foo", user)
    assert retrieve_robot_token(robot) == token

    # Ensure we can retrieve its information.
    found = lookup_robot("foobar+foo")
    assert found == robot

    creds = get_pull_credentials("foobar+foo")
    assert creds is not None
    assert creds["username"] == "foobar+foo"
    assert creds["password"] == token

    assert verify_robot("foobar+foo", token) == robot

    with pytest.raises(InvalidRobotException):
        assert verify_robot("foobar+foo", "someothertoken")

    with pytest.raises(InvalidRobotException):
        assert verify_robot("foobar+unknownbot", token)