updates to test factories to accomodate application roles
This commit is contained in:
parent
0ac8c9632b
commit
866043495b
@ -6,6 +6,8 @@ from .permissions import Permissions
|
|||||||
from .permission_set import PermissionSet
|
from .permission_set import PermissionSet
|
||||||
from .user import User
|
from .user import User
|
||||||
from .portfolio_role import PortfolioRole
|
from .portfolio_role import PortfolioRole
|
||||||
|
from .application_role import ApplicationRole
|
||||||
|
from .environment_role import EnvironmentRole
|
||||||
from .portfolio import Portfolio
|
from .portfolio import Portfolio
|
||||||
from .application import Application
|
from .application import Application
|
||||||
from .environment import Environment
|
from .environment import Environment
|
||||||
@ -14,4 +16,3 @@ from .audit_event import AuditEvent
|
|||||||
from .invitation import Invitation
|
from .invitation import Invitation
|
||||||
from .task_order import TaskOrder
|
from .task_order import TaskOrder
|
||||||
from .dd_254 import DD254
|
from .dd_254 import DD254
|
||||||
from .application_role import ApplicationRole
|
|
||||||
|
@ -20,7 +20,7 @@ class Application(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def users(self):
|
def users(self):
|
||||||
return set([user for env in self.environments for user in env.users])
|
return set(role.user for role in self.roles)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def num_users(self):
|
def num_users(self):
|
||||||
|
@ -25,6 +25,7 @@ class User(
|
|||||||
permission_sets = relationship("PermissionSet", secondary=users_permission_sets)
|
permission_sets = relationship("PermissionSet", secondary=users_permission_sets)
|
||||||
|
|
||||||
portfolio_roles = relationship("PortfolioRole", backref="user")
|
portfolio_roles = relationship("PortfolioRole", backref="user")
|
||||||
|
application_roles = relationship("ApplicationRole", backref="user")
|
||||||
|
|
||||||
email = Column(String, unique=True)
|
email = Column(String, unique=True)
|
||||||
dod_id = Column(String, unique=True, nullable=False)
|
dod_id = Column(String, unique=True, nullable=False)
|
||||||
|
@ -4,22 +4,14 @@ import string
|
|||||||
import factory
|
import factory
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
import datetime
|
import datetime
|
||||||
from faker import Faker as _Faker
|
|
||||||
|
|
||||||
from atst.forms import data
|
from atst.forms import data
|
||||||
from atst.models.attachment import Attachment
|
from atst.models import *
|
||||||
from atst.models.environment import Environment
|
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||||
from atst.models.application import Application
|
from atst.models.application_role import Status as ApplicationRoleStatus
|
||||||
from atst.models.task_order import TaskOrder
|
from atst.models.invitation import Status as InvitationStatus
|
||||||
from atst.models.user import User
|
|
||||||
from atst.models.permission_set import PermissionSet
|
|
||||||
from atst.models.portfolio import Portfolio
|
|
||||||
from atst.domain.permission_sets import PermissionSets, PORTFOLIO_PERMISSION_SETS
|
|
||||||
from atst.models.portfolio_role import PortfolioRole, Status as PortfolioRoleStatus
|
|
||||||
from atst.models.environment_role import EnvironmentRole
|
|
||||||
from atst.models.invitation import Invitation, Status as InvitationStatus
|
|
||||||
from atst.models.dd_254 import DD254
|
|
||||||
from atst.domain.invitations import Invitations
|
from atst.domain.invitations import Invitations
|
||||||
|
from atst.domain.permission_sets import PermissionSets
|
||||||
from atst.domain.portfolio_roles import PortfolioRoles
|
from atst.domain.portfolio_roles import PortfolioRoles
|
||||||
|
|
||||||
|
|
||||||
@ -169,6 +161,20 @@ class ApplicationFactory(Base):
|
|||||||
with_environments = kwargs.pop("environments", [])
|
with_environments = kwargs.pop("environments", [])
|
||||||
application = super()._create(model_class, *args, **kwargs)
|
application = super()._create(model_class, *args, **kwargs)
|
||||||
|
|
||||||
|
# need to create application roles for environment users
|
||||||
|
app_members_from_envs = set()
|
||||||
|
for env in with_environments:
|
||||||
|
with_members = env.get("members", [])
|
||||||
|
for member_data in with_members:
|
||||||
|
member = member_data.get("user", UserFactory.create())
|
||||||
|
app_members_from_envs.add(member)
|
||||||
|
# set for environments in case we just created the
|
||||||
|
# user for the application
|
||||||
|
member_data["user"] = member
|
||||||
|
|
||||||
|
for member in app_members_from_envs:
|
||||||
|
ApplicationRoleFactory.create(application=application, user=member)
|
||||||
|
|
||||||
environments = [
|
environments = [
|
||||||
EnvironmentFactory.create(application=application, **e)
|
EnvironmentFactory.create(application=application, **e)
|
||||||
for e in with_environments
|
for e in with_environments
|
||||||
@ -207,6 +213,16 @@ class PortfolioRoleFactory(Base):
|
|||||||
permission_sets = factory.LazyFunction(base_portfolio_permission_sets)
|
permission_sets = factory.LazyFunction(base_portfolio_permission_sets)
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationRoleFactory(Base):
|
||||||
|
class Meta:
|
||||||
|
model = ApplicationRole
|
||||||
|
|
||||||
|
application = factory.SubFactory(ApplicationFactory)
|
||||||
|
user = factory.SubFactory(UserFactory)
|
||||||
|
status = ApplicationRoleStatus.PENDING
|
||||||
|
permission_sets = []
|
||||||
|
|
||||||
|
|
||||||
class EnvironmentRoleFactory(Base):
|
class EnvironmentRoleFactory(Base):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = EnvironmentRole
|
model = EnvironmentRole
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
from atst.domain.environments import Environments
|
from tests.factories import ApplicationFactory, ApplicationRoleFactory
|
||||||
from tests.factories import ApplicationFactory, UserFactory
|
|
||||||
|
|
||||||
|
|
||||||
def test_application_num_users():
|
def test_application_num_users():
|
||||||
@ -8,15 +7,5 @@ def test_application_num_users():
|
|||||||
)
|
)
|
||||||
assert application.num_users == 0
|
assert application.num_users == 0
|
||||||
|
|
||||||
first_env = application.environments[0]
|
ApplicationRoleFactory.create(application=application)
|
||||||
user1 = UserFactory()
|
|
||||||
Environments.add_member(first_env, user1, "developer")
|
|
||||||
assert application.num_users == 1
|
assert application.num_users == 1
|
||||||
|
|
||||||
second_env = application.environments[-1]
|
|
||||||
Environments.add_member(second_env, user1, "developer")
|
|
||||||
assert application.num_users == 1
|
|
||||||
|
|
||||||
user2 = UserFactory()
|
|
||||||
Environments.add_member(second_env, user2, "developer")
|
|
||||||
assert application.num_users == 2
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user