Implement dispatch query for provision_user

This commit is contained in:
richard-dds
2019-09-20 11:37:18 -04:00
parent 1ef4e437d7
commit 2fca542100
6 changed files with 82 additions and 18 deletions

View File

@@ -16,11 +16,12 @@ from atst.jobs import (
dispatch_create_atat_admin_user,
dispatch_create_environment_baseline,
create_environment,
do_create_user,
dispatch_provision_user,
)
from atst.models.utils import claim_for_update
from atst.domain.exceptions import ClaimFailedException
from tests.factories import EnvironmentFactory, EnvironmentRoleFactory, PortfolioFactory
from atst.models import EnvironmentRole
@pytest.fixture(autouse=True, scope="function")
@@ -294,13 +295,30 @@ def test_claim_for_update(session):
assert environment.claimed_until is None
def test_create_user(csp, session):
environment = EnvironmentFactory.create(
root_user_info={"credentials": MockCloudProvider({})._auth_credentials}
def test_dispatch_provision_user(csp, session, celery_app, celery_worker, monkeypatch):
# Given that I have three environment roles:
# (A) one of which has a completed status
# (B) one of which has an environment that has not been provisioned
# (C) one of which is pending and has a provisioned environment
provisioned_environment = EnvironmentFactory.create(
cloud_id="cloud_id", root_user_info={}, baseline_info={}
)
unprovisioned_environment = EnvironmentFactory.create()
_er_a = EnvironmentRoleFactory.create(
environment=provisioned_environment, status=EnvironmentRole.Status.COMPLETED
)
_er_b = EnvironmentRoleFactory.create(
environment=unprovisioned_environment, status=EnvironmentRole.Status.PENDING
)
er_c = EnvironmentRoleFactory.create(
environment=provisioned_environment, status=EnvironmentRole.Status.PENDING
)
environment_role = EnvironmentRoleFactory.create(environment=environment)
do_create_user(csp, environment_role_id=environment_role.id)
session.refresh(environment_role)
mock = Mock()
monkeypatch.setattr("atst.jobs.provision_user", mock)
assert environment_role.csp_user_id
# When I dispatch the user provisioning task
dispatch_provision_user.run()
# I expect it to dispatch only one call, to EnvironmentRole C
mock.delay.assert_called_once_with(environment_role_id=er_c.id)