From 50a532ddbb2242f4bbcfc384713b2c4c833e19fe Mon Sep 17 00:00:00 2001 From: George Drummond Date: Thu, 11 Apr 2019 10:03:21 -0400 Subject: [PATCH] ApplicationRoles seed and domain --- atst/domain/application_roles.py | 15 +++++++++++++++ script/seed_sample.py | 15 ++++++++++++++- tests/domain/test_application_roles.py | 18 ++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 atst/domain/application_roles.py create mode 100644 tests/domain/test_application_roles.py diff --git a/atst/domain/application_roles.py b/atst/domain/application_roles.py new file mode 100644 index 00000000..41a75c0f --- /dev/null +++ b/atst/domain/application_roles.py @@ -0,0 +1,15 @@ +from atst.database import db +from atst.models.application_role import ApplicationRole + + +class ApplicationRoles(object): + @classmethod + def create(cls, user, application, permission_sets): + application_role = ApplicationRole(user=user, application_id=application.id) + + application_role.permission_sets = permission_sets + + db.session.add(application_role) + db.session.commit() + + return application_role diff --git a/script/seed_sample.py b/script/seed_sample.py index df5c0af5..5b175cb1 100644 --- a/script/seed_sample.py +++ b/script/seed_sample.py @@ -13,6 +13,7 @@ from atst.domain.users import Users from atst.domain.portfolios import Portfolios from atst.domain.applications import Applications from atst.domain.portfolio_roles import PortfolioRoles +from atst.domain.application_roles import ApplicationRoles from atst.models.invitation import Status as InvitationStatus from atst.domain.exceptions import AlreadyExistsError from tests.factories import ( @@ -27,6 +28,7 @@ from atst.routes.dev import _DEV_USERS as DEV_USERS from atst.domain.csp.reports import MockReportingProvider from atst.models.application import Application from atst.domain.environments import Environments +from atst.domain.permission_sets import PermissionSets PORTFOLIO_USERS = [ @@ -115,14 +117,25 @@ def create_task_order(portfolio, start, end, clin_01=None, clin_03=None): def add_applications_to_portfolio(portfolio, applications): + application_permission_sets = PermissionSets.get_many( + [PermissionSets.EDIT_APPLICATION_TEAM] + ) + for application in applications: - Applications.create( + application = Applications.create( portfolio=portfolio, name=application["name"], description=application["description"], environment_names=application["environments"], ) + for user in get_users(): + ApplicationRoles.create( + user=user, + application=application, + permission_sets=application_permission_sets, + ) + def create_demo_portfolio(name, data): try: diff --git a/tests/domain/test_application_roles.py b/tests/domain/test_application_roles.py new file mode 100644 index 00000000..02378521 --- /dev/null +++ b/tests/domain/test_application_roles.py @@ -0,0 +1,18 @@ +from atst.domain.application_roles import ApplicationRoles +from atst.domain.permission_sets import PermissionSets +from tests.factories import UserFactory, ApplicationFactory + + +def test_create_application_role(): + application = ApplicationFactory.create() + user = UserFactory.create() + + permission_sets = PermissionSets.get_many([PermissionSets.EDIT_APPLICATION_TEAM]) + + application_role = ApplicationRoles.create( + application=application, user=user, permission_sets=permission_sets + ) + + assert application_role.permission_sets == permission_sets + assert application_role.application == application + assert application_role.user == user