Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
BinamB committed Aug 6, 2020
1 parent 1c33708 commit a34c604
Showing 1 changed file with 60 additions and 3 deletions.
63 changes: 60 additions & 3 deletions tests/google/test_service_accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -1178,7 +1178,7 @@ def test_invalid_project_limit_service_account_registration(
assert len(db_session.query(ServiceAccountToGoogleBucketAccessGroup).all()) == 0


def test_patch_service_account_limit(
def test_patch_service_account_invalid_limit(
client,
app,
db_session,
Expand All @@ -1190,12 +1190,12 @@ def test_patch_service_account_limit(
add_user_service_account_to_google_mock,
):
"""
Test that patching with new project_access against _dry_run returns 400
Test that patching with new project_access returns 400
when more than SERVICE_ACCOUNT_LIMIT projects are trying to be registered.
"""
encoded_creds_jwt = encoded_jwt_service_accounts_access["jwt"]
service_account = register_user_service_account["service_account"]
n_projects = 8
n_projects = config["SERVICE_ACCOUNT_LIMIT"] + 1
project_access = []
for i in range(n_projects):
project_access.append("valid-project-{}".format(i))
Expand All @@ -1221,6 +1221,63 @@ def test_patch_service_account_limit(
assert len(db_session.query(ServiceAccountToGoogleBucketAccessGroup).all()) == 2


def test_patch_service_account_valid_limit(
client,
app,
db_session,
encoded_jwt_service_accounts_access,
register_user_service_account,
user_can_manage_service_account_mock,
valid_user_service_account_mock,
revoke_user_service_account_from_google_mock,
add_user_service_account_to_google_mock,
):
"""
Test that patching with new project_access returns 204
when SERVICE_ACCOUNT_LIMIT number of projects is registered.
"""
encoded_creds_jwt = encoded_jwt_service_accounts_access["jwt"]
service_account = register_user_service_account["service_account"]
project_access = []
n_projects = config["SERVICE_ACCOUNT_LIMIT"]
for i in range(n_projects):
project = Project(id=i, auth_id="auth_id_{}".format(i))

bucket = Bucket(id=i)

db_session.add(project)
db_session.add(bucket)
db_session.commit()

project_to_bucket = ProjectToBucket(project_id=i, bucket_id=i)

db_session.add(project_to_bucket)
db_session.commit()

gbag = GoogleBucketAccessGroup(id=i, bucket_id=i, email="gbag@gmail.com")

db_session.add(gbag)
db_session.commit()

project_access.append("auth_id_{}".format(i))

response = client.patch(
"/google/service_accounts/{}".format(quote(service_account.email)),
headers={"Authorization": "Bearer " + encoded_creds_jwt},
content_type="application/json",
data=json.dumps({"project_access": project_access}),
)
assert response.status_code == 204

service_account_accesses = (
db_session.query(ServiceAccountToGoogleBucketAccessGroup).filter_by(
service_account_id=service_account.id
)
).all()

assert len(service_account_accesses) == config["SERVICE_ACCOUNT_LIMIT"]


def _assert_expected_service_account_response_structure(data):
assert "service_account_email" in data
assert "google_project_id" in data
Expand Down

0 comments on commit a34c604

Please sign in to comment.