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"
def test_get_organizations(deleted, initialized_db): # Delete an org. deleted_org = get_organization('sellnsmall') queue = WorkQueue('testgcnamespace', lambda db: db.transaction()) mark_namespace_for_deletion(deleted_org, [], queue) orgs = get_organizations(deleted=deleted) assert orgs deleted_found = [org for org in orgs if org.id == deleted_org.id] assert bool(deleted_found) == deleted
def test_get_active_users(disabled, deleted, initialized_db): # Delete a user. deleted_user = model.user.get_user("public") queue = WorkQueue("testgcnamespace", lambda db: db.transaction()) mark_namespace_for_deletion(deleted_user, [], queue) users = get_active_users(disabled=disabled, deleted=deleted) deleted_found = [user for user in users if user.id == deleted_user.id] assert bool(deleted_found) == (deleted and disabled) for user in users: if not disabled: assert user.enabled
def test_delete_namespace_via_marker(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 repositories. create_repository("foobar", "somerepo", user) create_repository("foobar", "anotherrepo", user) # Mark the user for deletion. queue = WorkQueue("testgcnamespace", create_transaction) marker_id = mark_namespace_for_deletion(user, [], queue) # Delete the user. with check_transitive_modifications(): delete_namespace_via_marker(marker_id, []) # Ensure the user was actually deleted. with pytest.raises(User.DoesNotExist): User.get(id=user.id) with pytest.raises(DeletedNamespace.DoesNotExist): DeletedNamespace.get(id=marker_id)
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"