diff --git a/atst/domain/environments.py b/atst/domain/environments.py index be007740..853eadb7 100644 --- a/atst/domain/environments.py +++ b/atst/domain/environments.py @@ -1,5 +1,6 @@ from atst.database import db from atst.models.environment import Environment +from atst.models.environment_role import EnvironmentRole, CSPRole class Environments(object): @@ -16,3 +17,13 @@ class Environments(object): environment = Environment(project=project, name=name) db.session.add(environment) db.session.commit() + + @classmethod + def add_member(cls, user, environment, member): + environment_user = EnvironmentRole( + user=member, environment=environment, role=CSPRole.NONSENSE_ROLE.value + ) + db.session.add(environment_user) + db.session.commit() + + return environment diff --git a/atst/models/environment.py b/atst/models/environment.py index 8e812635..d58ef270 100644 --- a/atst/models/environment.py +++ b/atst/models/environment.py @@ -14,3 +14,7 @@ class Environment(Base, TimestampsMixin): project_id = Column(ForeignKey("projects.id")) project = relationship("Project") + + @property + def users(self): + return [r.user for r in self.roles] diff --git a/tests/models/test_environments.py b/tests/models/test_environments.py new file mode 100644 index 00000000..11dc6408 --- /dev/null +++ b/tests/models/test_environments.py @@ -0,0 +1,16 @@ +from atst.domain.environments import Environments +from atst.domain.workspaces import Workspaces +from atst.domain.projects import Projects +from tests.factories import RequestFactory, UserFactory + + +def test_add_user_to_environment(): + owner = UserFactory.create() + developer = UserFactory.from_atat_role("developer") + + workspace = Workspaces.create(RequestFactory.create(creator=owner)) + project = Projects.create(workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]) + dev_environment = project.environments[0] + + dev_environment = Environments.add_member(owner, dev_environment, developer) + assert developer in dev_environment.users