Update atst to atat

This commit is contained in:
leigh-mil
2020-02-28 16:01:45 -05:00
parent 6eb48239cf
commit c2814416fb
215 changed files with 735 additions and 746 deletions

View File

@@ -1,7 +1,7 @@
import os
import pytest
from atst.domain.authnid.crl.util import crl_local_path, CRL_LIST
from atat.domain.authnid.crl.util import crl_local_path, CRL_LIST
from tests.utils import parse_for_issuer_and_next_update

View File

@@ -7,8 +7,8 @@ from werkzeug.datastructures import FileStorage
from collections import OrderedDict
from unittest.mock import Mock
from atst.app import make_app, make_config
from atst.database import db as _db
from atat.app import make_app, make_config
from atat.database import db as _db
import tests.factories as factories
from tests.mocks import PDF_FILENAME, PDF_FILENAME2
from tests.utils import FakeLogger, FakeNotificationSender
@@ -145,7 +145,7 @@ def dummy_field():
def user_session(monkeypatch, session):
def set_user_session(user=None):
monkeypatch.setattr(
"atst.domain.auth.get_current_user",
"atat.domain.auth.get_current_user",
lambda *args: user or factories.UserFactory.create(),
)

View File

@@ -1,13 +1,13 @@
import pytest
from atst.domain.authnid import AuthenticationContext
from atst.domain.authnid.crl import (
from atat.domain.authnid import AuthenticationContext
from atat.domain.authnid.crl import (
CRLCache,
CRLRevocationException,
CRLInvalidException,
)
from atst.domain.exceptions import UnauthenticatedError, NotFoundError
from atst.domain.users import Users
from atat.domain.exceptions import UnauthenticatedError, NotFoundError
from atat.domain.users import Users
from tests.mocks import DOD_SDN_INFO, DOD_SDN, FIXTURE_EMAIL_ADDRESS
from tests.factories import UserFactory

View File

@@ -7,13 +7,13 @@ from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.serialization import Encoding
from OpenSSL import crypto
from atst.domain.authnid.crl import (
from atat.domain.authnid.crl import (
CRLCache,
CRLRevocationException,
CRLInvalidException,
NoOpCRLCache,
)
from atst.domain.authnid.crl.util import (
from atat.domain.authnid.crl.util import (
load_crl_locations_cache,
serialize_crl_locations_cache,
CRLParseError,

View File

@@ -1,5 +1,5 @@
import pytest
import atst.domain.authnid.utils as utils
import atat.domain.authnid.utils as utils
from tests.mocks import DOD_SDN, FIXTURE_EMAIL_ADDRESS

View File

@@ -1,4 +1,4 @@
from atst.domain.csp.reports import prepare_azure_reporting_data
from atat.domain.csp.reports import prepare_azure_reporting_data
from tests.factories import PortfolioFactory
from decimal import Decimal
import pendulum

View File

@@ -8,7 +8,7 @@ import pytest
from tests.factories import ApplicationFactory, EnvironmentFactory
from tests.mock_azure import AUTH_CREDENTIALS, mock_azure
from atst.domain.csp.cloud.exceptions import (
from atat.domain.csp.cloud.exceptions import (
AuthenticationException,
UserProvisioningException,
ConnectionException,
@@ -16,8 +16,8 @@ from atst.domain.csp.cloud.exceptions import (
SecretException,
DomainNameException,
)
from atst.domain.csp.cloud import AzureCloudProvider
from atst.domain.csp.cloud.models import (
from atat.domain.csp.cloud import AzureCloudProvider
from atat.domain.csp.cloud.models import (
AdminRoleDefinitionCSPPayload,
AdminRoleDefinitionCSPResult,
ApplicationCSPPayload,
@@ -69,7 +69,7 @@ from atst.domain.csp.cloud.models import (
UserCSPPayload,
UserRoleCSPPayload,
)
from atst.domain.csp.cloud.exceptions import UserProvisioningException
from atat.domain.csp.cloud.exceptions import UserProvisioningException
BILLING_ACCOUNT_NAME = "52865e4c-52e8-5a6c-da6b-c58f0814f06f:7ea5de9d-b8ce-4901-b1c5-d864320c7b03_2019-05-31"
@@ -1599,7 +1599,7 @@ class TestGenerateValidDomainName:
return True
monkeypatch.setattr(
"atst.domain.csp.cloud.AzureCloudProvider.validate_domain_name",
"atat.domain.csp.cloud.AzureCloudProvider.validate_domain_name",
_validate_domain_name,
)
assert mock_azure.generate_valid_domain_name(tenant_name) == tenant_name
@@ -1609,7 +1609,7 @@ class TestGenerateValidDomainName:
return False
monkeypatch.setattr(
"atst.domain.csp.cloud.AzureCloudProvider.validate_domain_name",
"atat.domain.csp.cloud.AzureCloudProvider.validate_domain_name",
_validate_domain_name,
)
with pytest.raises(DomainNameException):
@@ -1626,7 +1626,7 @@ class TestGenerateValidDomainName:
return True
monkeypatch.setattr(
"atst.domain.csp.cloud.AzureCloudProvider.validate_domain_name",
"atat.domain.csp.cloud.AzureCloudProvider.validate_domain_name",
_validate_domain_name,
)
assert mock_azure.generate_valid_domain_name(tenant_name) != tenant_name

View File

@@ -1,4 +1,4 @@
from atst.domain.csp.files import AzureFileService
from atat.domain.csp.files import AzureFileService
from azure.storage.blob.models import Blob

View File

@@ -1,7 +1,7 @@
import pytest
from atst.domain.csp import MockCloudProvider
from atst.domain.csp.cloud.models import (
from atat.domain.csp import MockCloudProvider
from atat.domain.csp.cloud.models import (
EnvironmentCSPPayload,
EnvironmentCSPResult,
TenantCSPPayload,

View File

@@ -2,7 +2,7 @@ import pytest
from pydantic import ValidationError
from atst.domain.csp.cloud.models import (
from atat.domain.csp.cloud.models import (
AZURE_MGMNT_PATH,
KeyVaultCredentials,
ManagementGroupCSPPayload,

View File

@@ -1,4 +1,4 @@
from atst.domain.csp.cloud.policy import AzurePolicyManager, AzurePolicy
from atat.domain.csp.cloud.policy import AzurePolicyManager, AzurePolicy
def test_portfolio_definitions():

View File

@@ -1,10 +1,10 @@
import pytest
from atst.domain.application_roles import ApplicationRoles
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.exceptions import NotFoundError
from atst.domain.permission_sets import PermissionSets
from atst.models import ApplicationRoleStatus
from atat.domain.application_roles import ApplicationRoles
from atat.domain.environment_roles import EnvironmentRoles
from atat.domain.exceptions import NotFoundError
from atat.domain.permission_sets import PermissionSets
from atat.models import ApplicationRoleStatus
from tests.factories import *

View File

@@ -2,12 +2,12 @@ import pendulum
import pytest
from uuid import uuid4
from atst.models import CSPRole, ApplicationRoleStatus
from atst.domain.application_roles import ApplicationRoles
from atst.domain.applications import Applications
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.exceptions import AlreadyExistsError, NotFoundError
from atst.domain.permission_sets import PermissionSets
from atat.models import CSPRole, ApplicationRoleStatus
from atat.domain.application_roles import ApplicationRoles
from atat.domain.applications import Applications
from atat.domain.environment_roles import EnvironmentRoles
from atat.domain.exceptions import AlreadyExistsError, NotFoundError
from atat.domain.permission_sets import PermissionSets
from tests.factories import (
ApplicationFactory,

View File

@@ -1,12 +1,12 @@
import pytest
from atst.domain.applications import Applications
from atst.domain.audit_log import AuditLog
from atst.domain.exceptions import UnauthorizedError
from atst.domain.permission_sets import PermissionSets
from atst.domain.portfolios import Portfolios
from atst.domain.users import Users
from atst.models.portfolio_role import Status as PortfolioRoleStatus
from atat.domain.applications import Applications
from atat.domain.audit_log import AuditLog
from atat.domain.exceptions import UnauthorizedError
from atat.domain.permission_sets import PermissionSets
from atat.domain.portfolios import Portfolios
from atat.domain.users import Users
from atat.models.portfolio_role import Status as PortfolioRoleStatus
from tests.factories import (
ApplicationFactory,
ApplicationInvitationFactory,

View File

@@ -1,6 +1,6 @@
from flask import make_response, session
from atst.domain.auth import logout
from atat.domain.auth import logout
def _write_session(app):
@@ -19,7 +19,7 @@ def test_logout_destroys_session(app):
def test_logout_logs_dod_id_for_current_user(monkeypatch, mock_logger):
dod_id = "3434343434"
monkeypatch.setattr("atst.domain.auth._current_dod_id", lambda: dod_id)
monkeypatch.setattr("atat.domain.auth._current_dod_id", lambda: dod_id)
logout()
assert dod_id in mock_logger.messages[-1]

View File

@@ -7,12 +7,12 @@ from tests.factories import (
PortfolioFactory,
PortfolioRoleFactory,
)
from atst.domain.authz import Authorization, user_can_access
from atst.domain.authz.decorator import user_can_access_decorator
from atst.domain.permission_sets import PermissionSets
from atst.domain.exceptions import UnauthorizedError
from atst.models.permissions import Permissions
from atst.domain.portfolio_roles import PortfolioRoles
from atat.domain.authz import Authorization, user_can_access
from atat.domain.authz.decorator import user_can_access_decorator
from atat.domain.permission_sets import PermissionSets
from atat.domain.exceptions import UnauthorizedError
from atat.models.permissions import Permissions
from atat.domain.portfolio_roles import PortfolioRoles
from tests.utils import FakeLogger
@@ -222,7 +222,7 @@ def test_user_can_access_decorator_logs_access(
set_current_user(user)
monkeypatch.setattr(
"atst.domain.authz.decorator.check_access", lambda *a, **k: True
"atat.domain.authz.decorator.check_access", lambda *a, **k: True
)
num_msgs = len(mock_logger.messages)
_do_something()
@@ -233,7 +233,7 @@ def test_user_can_access_decorator_logs_access(
def _unauthorized(*a, **k):
raise UnauthorizedError(user, "do something")
monkeypatch.setattr("atst.domain.authz.decorator.check_access", _unauthorized)
monkeypatch.setattr("atat.domain.authz.decorator.check_access", _unauthorized)
num_msgs = len(mock_logger.messages)
with pytest.raises(UnauthorizedError):
_do_something()

View File

@@ -1,7 +1,7 @@
import pytest
from atst.domain.environment_roles import EnvironmentRoles
from atst.models import EnvironmentRole, ApplicationRoleStatus
from atat.domain.environment_roles import EnvironmentRoles
from atat.models import EnvironmentRole, ApplicationRoleStatus
from tests.factories import *

View File

@@ -1,10 +1,10 @@
import pytest
from uuid import uuid4
from atst.domain.environments import Environments
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.exceptions import AlreadyExistsError, DisabledError, NotFoundError
from atst.models.environment_role import CSPRole, EnvironmentRole
from atat.domain.environments import Environments
from atat.domain.environment_roles import EnvironmentRoles
from atat.domain.exceptions import AlreadyExistsError, DisabledError, NotFoundError
from atat.models.environment_role import CSPRole, EnvironmentRole
from tests.factories import (
ApplicationFactory,

View File

@@ -2,16 +2,16 @@ import pytest
import re
import pendulum
from atst.domain.audit_log import AuditLog
from atst.domain.invitations import (
from atat.domain.audit_log import AuditLog
from atat.domain.invitations import (
ExpiredError,
InvitationError,
NotFoundError,
PortfolioInvitations,
WrongUserError,
)
from atst.models import InvitationStatus
from atst.models.portfolio_role import Status as PortfolioRoleStatus
from atat.models import InvitationStatus
from atat.models.portfolio_role import Status as PortfolioRoleStatus
from tests.factories import (
PortfolioFactory,

View File

@@ -1,7 +1,7 @@
import pytest
from atst.domain.permission_sets import PermissionSets
from atst.domain.exceptions import NotFoundError
from atst.utils import first_or_none
from atat.domain.permission_sets import PermissionSets
from atat.domain.exceptions import NotFoundError
from atat.utils import first_or_none
def test_get_all():

View File

@@ -1,8 +1,8 @@
from atst.domain.permission_sets import PermissionSets
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.users import Users
from atst.models.permissions import Permissions
from atst.models.portfolio_role import Status as PortfolioRoleStatus
from atat.domain.permission_sets import PermissionSets
from atat.domain.portfolio_roles import PortfolioRoles
from atat.domain.users import Users
from atat.models.permissions import Permissions
from atat.models.portfolio_role import Status as PortfolioRoleStatus
from tests.factories import (
PortfolioFactory,

View File

@@ -17,16 +17,16 @@ from tests.factories import (
UserFactory,
)
from atst.models import FSMStates, PortfolioStateMachine, TaskOrder
from atst.models.mixins.state_machines import (
from atat.models import FSMStates, PortfolioStateMachine, TaskOrder
from atat.models.mixins.state_machines import (
AzureStages,
StageStates,
_build_csp_states,
_build_transitions,
compose_state,
)
from atst.models.portfolio import Portfolio
from atst.models.portfolio_state_machine import (
from atat.models.portfolio import Portfolio
from atat.models.portfolio_state_machine import (
StateMachineMisconfiguredError,
_stage_state_to_stage_name,
_stage_to_classname,
@@ -277,7 +277,7 @@ def test_state_machine_initialization(state_machine):
@pytest.mark.state_machine
@patch("atst.domain.csp.cloud.MockCloudProvider")
@patch("atat.domain.csp.cloud.MockCloudProvider")
def test_fsm_transition_start(
mock_cloud_provider, state_machine: PortfolioStateMachine
):

View File

@@ -1,21 +1,21 @@
import pytest
from uuid import uuid4
from atst.domain.exceptions import NotFoundError, UnauthorizedError
from atst.domain.portfolios import (
from atat.domain.exceptions import NotFoundError, UnauthorizedError
from atat.domain.portfolios import (
Portfolios,
PortfolioError,
PortfolioDeletionApplicationsExistError,
PortfolioStateMachines,
)
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.applications import Applications
from atst.domain.application_roles import ApplicationRoles
from atst.domain.environments import Environments
from atst.domain.permission_sets import PermissionSets, PORTFOLIO_PERMISSION_SETS
from atst.models.application_role import Status as ApplicationRoleStatus
from atst.models.portfolio_role import Status as PortfolioRoleStatus
from atst.models import FSMStates
from atat.domain.portfolio_roles import PortfolioRoles
from atat.domain.applications import Applications
from atat.domain.application_roles import ApplicationRoles
from atat.domain.environments import Environments
from atat.domain.permission_sets import PermissionSets, PORTFOLIO_PERMISSION_SETS
from atat.models.application_role import Status as ApplicationRoleStatus
from atat.models.portfolio_role import Status as PortfolioRoleStatus
from atat.models import FSMStates
from tests.factories import (
ApplicationFactory,

View File

@@ -1,6 +1,6 @@
import pytest
from atst.domain.reports import Reports
from atat.domain.reports import Reports
from tests.factories import PortfolioFactory
from decimal import Decimal

View File

@@ -2,10 +2,10 @@ import pytest
import pendulum
from decimal import Decimal
from atst.domain.exceptions import AlreadyExistsError
from atst.domain.task_orders import TaskOrders
from atst.models import Attachment
from atst.models.task_order import TaskOrder, SORT_ORDERING, Status
from atat.domain.exceptions import AlreadyExistsError
from atat.domain.task_orders import TaskOrders
from atat.models import Attachment
from atat.models.task_order import TaskOrder, SORT_ORDERING, Status
from tests.factories import TaskOrderFactory, CLINFactory, PortfolioFactory

View File

@@ -1,9 +1,9 @@
import pytest
from uuid import uuid4
from atst.domain.users import Users
from atst.domain.exceptions import NotFoundError, AlreadyExistsError, UnauthorizedError
from atst.utils import pick
from atat.domain.users import Users
from atat.domain.exceptions import NotFoundError, AlreadyExistsError, UnauthorizedError
from atat.utils import pick
from tests.factories import UserFactory

View File

@@ -6,13 +6,13 @@ import factory
from uuid import uuid4
import pendulum
from atst.forms import data
from atst.models import *
from atst.models.mixins.state_machines import FSMStates
from atat.forms import data
from atat.models import *
from atat.models.mixins.state_machines import FSMStates
from atst.domain.invitations import PortfolioInvitations
from atst.domain.permission_sets import PermissionSets
from atst.domain.portfolio_roles import PortfolioRoles
from atat.domain.invitations import PortfolioInvitations
from atat.domain.permission_sets import PermissionSets
from atat.domain.portfolio_roles import PortfolioRoles
def random_choice(choices):

View File

@@ -1,7 +1,7 @@
import uuid
from atst.forms.data import ENV_ROLES
from atst.forms.application_member import *
from atat.forms.data import ENV_ROLES
from atat.forms.application_member import *
def test_environment_form():

View File

@@ -2,7 +2,7 @@ import pytest
from wtforms.fields import RadioField, FieldList, StringField
from werkzeug.datastructures import ImmutableMultiDict
from atst.forms.forms import BaseForm, remove_empty_string
from atat.forms.forms import BaseForm, remove_empty_string
class FormWithChoices(BaseForm):

View File

@@ -1,7 +1,7 @@
import pytest
from werkzeug.datastructures import ImmutableMultiDict
from atst.forms.edit_user import EditUserForm
from atat.forms.edit_user import EditUserForm
from tests.factories import UserFactory

View File

@@ -2,9 +2,9 @@ import pendulum
from dateutil.relativedelta import relativedelta
from flask import current_app as app
from atst.forms.task_order import CLINForm, TaskOrderForm
from atst.models import JEDICLINType
from atst.utils.localization import translate
from atat.forms.task_order import CLINForm, TaskOrderForm
from atat.models import JEDICLINType
from atat.utils.localization import translate
import tests.factories as factories

View File

@@ -1,7 +1,7 @@
from wtforms.validators import ValidationError, StopValidation
import pytest
from atst.forms.validators import *
from atat.forms.validators import *
class TestNumber:

View File

@@ -1,7 +1,7 @@
import pytest
from unittest.mock import Mock
from atst.domain.csp.cloud import AzureCloudProvider
from atat.domain.csp.cloud import AzureCloudProvider
AZURE_CONFIG = {
"AZURE_CALC_CLIENT_ID": "MOCK",

View File

@@ -1,7 +1,7 @@
from atst.database import db
from atat.database import db
from tests.factories import UserFactory
from atst.models.mixins.auditable import AuditableMixin
from atst.domain.users import Users
from atat.models.mixins.auditable import AuditableMixin
from atat.domain.users import Users
def test_logging_audit_event_on_create(mock_logger):

View File

@@ -1,8 +1,8 @@
import pytest
from atst.domain.application_roles import ApplicationRoles
from atst.models import ApplicationRoleStatus
from atst.models import AuditEvent
from atat.domain.application_roles import ApplicationRoles
from atat.models import ApplicationRoleStatus
from atat.models import AuditEvent
from tests.factories import (
ApplicationFactory,

View File

@@ -1,9 +1,9 @@
import pytest
import pendulum
from atst.domain.permission_sets import PermissionSets
from atst.domain.environment_roles import EnvironmentRoles
from atst.models.audit_event import AuditEvent
from atat.domain.permission_sets import PermissionSets
from atat.domain.environment_roles import EnvironmentRoles
from atat.models.audit_event import AuditEvent
from tests.factories import *

View File

@@ -1,5 +1,5 @@
from atst.models import CLIN
from atst.models.clin import JEDICLINType
from atat.models import CLIN
from atat.models.clin import JEDICLINType
from tests.factories import *

View File

@@ -1,9 +1,9 @@
import pytest
from atst.models import AuditEvent
from atst.models.environment_role import CSPRole
from atst.domain.applications import Applications
from atst.domain.environment_roles import EnvironmentRoles
from atat.models import AuditEvent
from atat.models.environment_role import CSPRole
from atat.domain.applications import Applications
from atat.domain.environment_roles import EnvironmentRoles
from tests.factories import *

View File

@@ -1,6 +1,6 @@
import pendulum
from atst.models import InvitationStatus, PortfolioRoleStatus
from atat.models import InvitationStatus, PortfolioRoleStatus
from tests.factories import (
PortfolioInvitationFactory,

View File

@@ -1,15 +1,15 @@
import pytest
import pendulum
from atst.domain.environments import Environments
from atst.domain.portfolios import Portfolios
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.applications import Applications
from atst.domain.permission_sets import PermissionSets
from atst.models import AuditEvent, InvitationStatus, PortfolioRoleStatus, CSPRole
from atat.domain.environments import Environments
from atat.domain.portfolios import Portfolios
from atat.domain.portfolio_roles import PortfolioRoles
from atat.domain.applications import Applications
from atat.domain.permission_sets import PermissionSets
from atat.models import AuditEvent, InvitationStatus, PortfolioRoleStatus, CSPRole
from tests.factories import *
from atst.domain.portfolio_roles import PortfolioRoles
from atat.domain.portfolio_roles import PortfolioRoles
@pytest.mark.audit_log

View File

@@ -4,9 +4,9 @@ import pendulum
from unittest.mock import patch, PropertyMock
import pendulum
from atst.models import *
from atst.models.clin import JEDICLINType
from atst.models.task_order import TaskOrder, Status
from atat.models import *
from atat.models.clin import JEDICLINType
from atat.models.task_order import TaskOrder, Status
from tests.factories import CLINFactory, TaskOrderFactory
from tests.mocks import PDF_FILENAME
@@ -72,8 +72,8 @@ def test_clin_sorting():
class TestTaskOrderStatus:
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_signed", new_callable=PropertyMock)
def test_draft_status(self, is_signed, is_completed):
# Given that I have a TO that is neither completed nor signed
to = TaskOrderFactory.create()
@@ -82,10 +82,10 @@ class TestTaskOrderStatus:
assert to.status == Status.DRAFT
@patch("atst.models.TaskOrder.end_date", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.start_date", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.end_date", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.start_date", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_signed", new_callable=PropertyMock)
def test_active_status(self, is_signed, is_completed, start_date, end_date):
today = pendulum.today(tz="UTC").date()
@@ -110,10 +110,10 @@ class TestTaskOrderStatus:
assert to_2.status == Status.ACTIVE
@patch("atst.models.TaskOrder.end_date", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.start_date", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.end_date", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.start_date", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_signed", new_callable=PropertyMock)
def test_upcoming_status(self, is_signed, is_completed, start_date, end_date):
# Given that I have a signed TO and today is before its start_date
to = TaskOrderFactory.create()
@@ -125,10 +125,10 @@ class TestTaskOrderStatus:
# Its status should be upcoming
assert to.status == Status.UPCOMING
@patch("atst.models.TaskOrder.start_date", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.end_date", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.start_date", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.end_date", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_signed", new_callable=PropertyMock)
def test_expired_status(self, is_signed, is_completed, end_date, start_date):
# Given that I have a signed TO and today is after its expiration date
to = TaskOrderFactory.create()
@@ -140,8 +140,8 @@ class TestTaskOrderStatus:
# Its status should be expired
assert to.status == Status.EXPIRED
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atat.models.TaskOrder.is_signed", new_callable=PropertyMock)
def test_unsigned_status(self, is_signed, is_completed):
# Given that I have a TO that is completed but not signed
to = TaskOrder(signed_at=pendulum.now().subtract(days=1))

View File

@@ -2,9 +2,9 @@ import pytest
from sqlalchemy.exc import InternalError
import pendulum
from atst.database import db
from atst.domain.users import Users
from atst.models.user import User
from atat.database import db
from atat.domain.users import Users
from atat.models.user import User
from tests.factories import UserFactory, ApplicationFactory, ApplicationRoleFactory

View File

@@ -1,7 +1,7 @@
from threading import Thread
from atst.domain.exceptions import ClaimFailedException
from atst.models.utils import claim_for_update, claim_many_for_update
from atat.domain.exceptions import ClaimFailedException
from atat.models.utils import claim_for_update, claim_many_for_update
from tests.factories import EnvironmentFactory

View File

@@ -7,11 +7,11 @@ from wtforms.fields import StringField
from wtforms.validators import InputRequired
from wtforms.widgets import ListWidget, CheckboxInput
from atst.forms.task_order import CLINForm
from atst.forms.task_order import TaskOrderForm
from atst.models import Permissions
from atst.routes.task_orders.new import render_task_orders_edit
from atst.utils.context_processors import user_can_view
from atat.forms.task_order import CLINForm
from atat.forms.task_order import TaskOrderForm
from atat.models import Permissions
from atat.routes.task_orders.new import render_task_orders_edit
from atat.utils.context_processors import user_can_view
from tests import factories

View File

@@ -2,9 +2,9 @@ from flask import url_for, get_flashed_messages
from tests.factories import *
from atst.domain.applications import Applications
from atst.domain.portfolios import Portfolios
from atst.models.portfolio_role import Status as PortfolioRoleStatus
from atat.domain.applications import Applications
from atat.domain.portfolios import Portfolios
from atat.models.portfolio_role import Status as PortfolioRoleStatus
from tests.utils import captured_templates

View File

@@ -7,8 +7,8 @@ from tests.factories import (
ApplicationRoleFactory,
)
from unittest.mock import Mock
from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
from atst.models.application_invitation import ApplicationInvitation
from atat.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
from atat.models.application_invitation import ApplicationInvitation
def test_get_name_and_description_form(client, user_session):
@@ -134,7 +134,7 @@ def test_get_members(client, session, user_session):
def test_post_new_member(monkeypatch, client, user_session, session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_mail.delay", job_mock)
user = UserFactory.create()
application = ApplicationFactory.create(
environments=[{"name": "Naboo"}, {"name": "Endor"}]

View File

@@ -9,26 +9,26 @@ from tests.mock_azure import mock_azure
from tests.utils import captured_templates
from werkzeug.datastructures import ImmutableMultiDict
from atst.database import db
from atst.domain.application_roles import ApplicationRoles
from atst.domain.applications import Applications
from atst.domain.common import Paginator
from atst.domain.csp.cloud.azure_cloud_provider import AzureCloudProvider
from atst.domain.csp.cloud.exceptions import GeneralCSPException
from atst.domain.csp.cloud.models import (
from atat.database import db
from atat.domain.application_roles import ApplicationRoles
from atat.domain.applications import Applications
from atat.domain.common import Paginator
from atat.domain.csp.cloud.azure_cloud_provider import AzureCloudProvider
from atat.domain.csp.cloud.exceptions import GeneralCSPException
from atat.domain.csp.cloud.models import (
SubscriptionCreationCSPResult,
SubscriptionCreationCSPPayload,
)
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.invitations import ApplicationInvitations
from atst.domain.permission_sets import PermissionSets
from atst.forms.application import EditEnvironmentForm
from atst.forms.application_member import UpdateMemberForm
from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
from atst.models.application_role import Status as ApplicationRoleStatus
from atst.models.environment_role import CSPRole, EnvironmentRole
from atst.models.permissions import Permissions
from atst.routes.applications.settings import (
from atat.domain.environment_roles import EnvironmentRoles
from atat.domain.invitations import ApplicationInvitations
from atat.domain.permission_sets import PermissionSets
from atat.forms.application import EditEnvironmentForm
from atat.forms.application_member import UpdateMemberForm
from atat.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
from atat.models.application_role import Status as ApplicationRoleStatus
from atat.models.environment_role import CSPRole, EnvironmentRole
from atat.models.permissions import Permissions
from atat.routes.applications.settings import (
build_subscription_payload,
filter_env_roles_data,
filter_env_roles_form_data,
@@ -390,7 +390,7 @@ def test_delete_environment(client, user_session):
def test_create_member(monkeypatch, client, user_session, session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_mail.delay", job_mock)
user = UserFactory.create()
application = ApplicationFactory.create(
environments=[{"name": "Naboo"}, {"name": "Endor"}]
@@ -667,8 +667,8 @@ def test_filter_env_roles_data():
@pytest.fixture
def set_g(monkeypatch):
_g = Mock()
monkeypatch.setattr("atst.app.g", _g)
monkeypatch.setattr("atst.routes.applications.settings.g", _g)
monkeypatch.setattr("atat.app.g", _g)
monkeypatch.setattr("atat.routes.applications.settings.g", _g)
def _set_g(attr, val):
setattr(_g, attr, val)
@@ -684,7 +684,7 @@ def test_handle_create_member(monkeypatch, set_g, session):
(env, env_1) = application.environments
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_mail.delay", job_mock)
set_g("current_user", application.portfolio.owner)
set_g("portfolio", application.portfolio)
set_g("application", application)
@@ -756,7 +756,7 @@ def test_handle_update_member_with_error(set_g, monkeypatch, mock_logger):
raise GeneralCSPException(exception)
monkeypatch.setattr(
"atst.domain.environments.Environments.update_env_role", _raise_csp_exception
"atat.domain.environments.Environments.update_env_role", _raise_csp_exception
)
user = UserFactory.create()
@@ -829,7 +829,7 @@ def test_create_subscription_failure(client, user_session, monkeypatch):
raise GeneralCSPException("An error occurred.")
monkeypatch.setattr(
"atst.domain.csp.cloud.MockCloudProvider.create_subscription",
"atat.domain.csp.cloud.MockCloudProvider.create_subscription",
_raise_csp_exception,
)

View File

@@ -2,12 +2,12 @@ import pytest
from flask import url_for
from unittest.mock import MagicMock
from atst.domain.permission_sets import PermissionSets
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.portfolios import Portfolios
from atst.models.permissions import Permissions
from atst.models.portfolio_role import Status as PortfolioRoleStatus
from atst.utils.localization import translate
from atat.domain.permission_sets import PermissionSets
from atat.domain.portfolio_roles import PortfolioRoles
from atat.domain.portfolios import Portfolios
from atat.models.permissions import Permissions
from atat.models.portfolio_role import Status as PortfolioRoleStatus
from atat.utils.localization import translate
from tests.factories import PortfolioFactory, PortfolioRoleFactory, UserFactory

View File

@@ -9,9 +9,9 @@ from tests.factories import (
TaskOrderFactory,
UserFactory,
)
from atst.utils.localization import translate
from atst.domain.portfolios import Portfolios, PortfolioDeletionApplicationsExistError
from atst.domain.portfolios.query import PortfoliosQuery
from atat.utils.localization import translate
from atat.domain.portfolios import Portfolios, PortfolioDeletionApplicationsExistError
from atat.domain.portfolios.query import PortfoliosQuery
def test_new_portfolio(client, user_session):

View File

@@ -3,9 +3,9 @@ from unittest.mock import Mock
from flask import url_for
from atst.domain.portfolios import Portfolios
from atst.models import InvitationStatus, PortfolioRoleStatus
from atst.domain.permission_sets import PermissionSets
from atat.domain.portfolios import Portfolios
from atat.models import InvitationStatus, PortfolioRoleStatus
from atat.domain.permission_sets import PermissionSets
from tests.factories import *
@@ -45,7 +45,7 @@ def test_new_member_accepts_valid_invite(monkeypatch, client, user_session):
invite = PortfolioInvitationFactory.create(role=role, dod_id=user_info["dod_id"])
monkeypatch.setattr(
"atst.domain.auth.should_redirect_to_user_profile", lambda *args: False
"atat.domain.auth.should_redirect_to_user_profile", lambda *args: False
)
user_session(UserFactory.create(dod_id=user_info["dod_id"]))
response = client.get(
@@ -188,7 +188,7 @@ def test_user_can_only_resend_invites_in_their_portfolio(
monkeypatch, client, user_session
):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_mail.delay", job_mock)
portfolio = PortfolioFactory.create()
other_portfolio = PortfolioFactory.create()
user = UserFactory.create()
@@ -216,7 +216,7 @@ def test_user_can_only_resend_invites_in_their_portfolio(
def test_resend_invitation_sends_email(monkeypatch, client, user_session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_mail.delay", job_mock)
user = UserFactory.create()
portfolio = PortfolioFactory.create()
portfolio_role = PortfolioRoleFactory.create(
@@ -264,7 +264,7 @@ def test_user_with_permission_has_add_member_link(client, user_session):
def test_invite_member(monkeypatch, client, user_session, session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_mail.delay", job_mock)
user_data = UserFactory.dictionary()
portfolio = PortfolioFactory.create()
user_session(portfolio.owner)

View File

@@ -1,12 +1,12 @@
from flask import url_for
import pytest
from atst.domain.permission_sets import PermissionSets
from atst.domain.task_orders import TaskOrders
from atst.models import *
from atst.models.portfolio_role import Status as PortfolioStatus
from atst.models.task_order import Status as TaskOrderStatus
from atst.utils.localization import translate
from atat.domain.permission_sets import PermissionSets
from atat.domain.task_orders import TaskOrders
from atat.models import *
from atat.models.portfolio_role import Status as PortfolioStatus
from atat.models.task_order import Status as TaskOrderStatus
from atat.utils.localization import translate
from tests.factories import *
from tests.utils import captured_templates

View File

@@ -3,9 +3,9 @@ from flask import url_for, get_flashed_messages
import pendulum
from uuid import uuid4
from atst.domain.task_orders import TaskOrders
from atst.models.task_order import Status as TaskOrderStatus
from atst.models import TaskOrder
from atat.domain.task_orders import TaskOrders
from atat.models.task_order import Status as TaskOrderStatus
from atat.models import TaskOrder
from tests.factories import CLINFactory, PortfolioFactory, TaskOrderFactory, UserFactory
from tests.utils import captured_templates

View File

@@ -1,7 +1,7 @@
from flask import url_for
from atst.domain.users import Users
from atst.utils.localization import translate
from atat.domain.users import Users
from atat.utils.localization import translate
from tests.factories import UserFactory

View File

@@ -1,7 +1,7 @@
import pytest
from flask import url_for
from atst.app import make_config, make_app
from atat.app import make_config, make_app
from tests.factories import UserFactory

View File

@@ -3,14 +3,14 @@ import pytest
from flask import url_for
from tests.factories import UserFactory
from atst.utils.localization import translate
from atat.utils.localization import translate
def test_home_route(client, user_session):
user = UserFactory.create()
user_session(user)
response = client.get(url_for("atst.home"))
response = client.get(url_for("atat.home"))
assert response.status_code == 200
assert translate("home.add_portfolio_button_text").encode("utf8") in response.data

View File

@@ -1,5 +1,5 @@
from tests.factories import UserFactory, PortfolioFactory
from atst.routes import match_url_pattern
from atat.routes import match_url_pattern
def test_root_redirects_if_user_is_logged_in(client, user_session):

View File

@@ -1,6 +1,6 @@
from flask import url_for
from atst.domain.users import Users
from atat.domain.users import Users
from tests.factories import UserFactory

View File

@@ -5,21 +5,21 @@ import random
from flask import url_for, Response
import atst
from atst.app import make_app, make_config
from atst.domain.auth import UNPROTECTED_ROUTES as _NO_LOGIN_REQUIRED
from atst.domain.permission_sets import PermissionSets
from atst.models import CSPRole, PortfolioRoleStatus, ApplicationRoleStatus
import atat
from atat.app import make_app, make_config
from atat.domain.auth import UNPROTECTED_ROUTES as _NO_LOGIN_REQUIRED
from atat.domain.permission_sets import PermissionSets
from atat.models import CSPRole, PortfolioRoleStatus, ApplicationRoleStatus
from tests.factories import *
from atst.app import make_config, make_app
from atat.app import make_config, make_app
_NO_ACCESS_CHECK_REQUIRED = _NO_LOGIN_REQUIRED + [
"applications.accept_invitation", # available to all users; access control is built into invitation logic
"atst.catch_all", # available to all users
"atst.home", # available to all users
"atat.catch_all", # available to all users
"atat.home", # available to all users
"dev.messages", # dev tool
"dev.test_email", # dev tool
"portfolios.accept_invitation", # available to all users; access control is built into invitation logic
@@ -62,23 +62,23 @@ def test_all_protected_routes_have_access_control(
decorator.
"""
# monkeypatch any object lookups that might happen in the access decorator
monkeypatch.setattr("atst.domain.portfolios.Portfolios.for_user", lambda *a: [])
monkeypatch.setattr("atst.domain.portfolios.Portfolios.get", lambda *a: None)
monkeypatch.setattr("atst.domain.task_orders.TaskOrders.get", lambda *a: Mock())
monkeypatch.setattr("atst.domain.applications.Applications.get", lambda *a: Mock())
monkeypatch.setattr("atat.domain.portfolios.Portfolios.for_user", lambda *a: [])
monkeypatch.setattr("atat.domain.portfolios.Portfolios.get", lambda *a: None)
monkeypatch.setattr("atat.domain.task_orders.TaskOrders.get", lambda *a: Mock())
monkeypatch.setattr("atat.domain.applications.Applications.get", lambda *a: Mock())
monkeypatch.setattr(
"atst.domain.invitations.PortfolioInvitations._get", lambda *a: Mock()
"atat.domain.invitations.PortfolioInvitations._get", lambda *a: Mock()
)
monkeypatch.setattr("atst.app.assign_resources", lambda *a: None)
monkeypatch.setattr("atat.app.assign_resources", lambda *a: None)
# monkeypatch the error handler
monkeypatch.setattr(
"atst.routes.errors.handle_error", lambda *a, **k: ("error", 500)
"atat.routes.errors.handle_error", lambda *a, **k: ("error", 500)
)
# patch the internal function the access decorator uses so that
# we can check that it was called
mocker.patch("atst.domain.authz.decorator.check_access")
mocker.patch("atat.domain.authz.decorator.check_access")
user = UserFactory.create()
user_session(user)
@@ -87,7 +87,7 @@ def test_all_protected_routes_have_access_control(
getattr(client, method)(route)
assert (
atst.domain.authz.decorator.check_access.call_count == 1
atat.domain.authz.decorator.check_access.call_count == 1
), "no access control for {}".format(rule.endpoint)
@@ -135,7 +135,7 @@ def post_url_assert_status(no_debug_client, user_session):
# ccpo.activity_history
@pytest.mark.audit_log
def test_atst_activity_history_access(get_url_assert_status):
def test_atat_activity_history_access(get_url_assert_status):
ccpo = user_with(PermissionSets.VIEW_AUDIT_LOG)
rando = user_with()
@@ -608,7 +608,7 @@ def test_applications_resend_invite(post_url_assert_status):
# task_orders.download_task_order_pdf
def test_task_orders_download_task_order_pdf_access(get_url_assert_status, monkeypatch):
monkeypatch.setattr(
"atst.routes.task_orders.downloads.send_file", lambda a: Response("")
"atat.routes.task_orders.downloads.send_file", lambda a: Response("")
)
ccpo = user_with(PermissionSets.VIEW_PORTFOLIO_FUNDING)
owner = user_with()

View File

@@ -3,7 +3,7 @@ import os
from configparser import ConfigParser
import pytest
from atst.app import (
from atat.app import (
make_crl_validator,
apply_config_from_directory,
apply_config_from_environment,

View File

@@ -7,11 +7,11 @@ import pendulum
from flask import session, url_for
from cryptography.hazmat.primitives.serialization import Encoding
from atst.domain.users import Users
from atst.domain.exceptions import NotFoundError
from atst.domain.authnid.crl import CRLInvalidException
from atst.domain.auth import UNPROTECTED_ROUTES
from atst.domain.authnid.crl import CRLCache
from atat.domain.users import Users
from atat.domain.exceptions import NotFoundError
from atat.domain.authnid.crl import CRLInvalidException
from atat.domain.auth import UNPROTECTED_ROUTES
from atat.domain.authnid.crl import CRLCache
from .factories import UserFactory
from .mocks import DOD_SDN_INFO, DOD_SDN, FIXTURE_EMAIL_ADDRESS
@@ -27,7 +27,7 @@ def _fetch_user_info(c, t):
def _login(client, verify="SUCCESS", sdn=DOD_SDN, cert="", **url_query_args):
return client.get(
url_for("atst.login_redirect", **url_query_args),
url_for("atat.login_redirect", **url_query_args),
environ_base={
"HTTP_X_SSL_CLIENT_VERIFY": verify,
"HTTP_X_SSL_CLIENT_S_DN": sdn,
@@ -38,10 +38,10 @@ def _login(client, verify="SUCCESS", sdn=DOD_SDN, cert="", **url_query_args):
def test_successful_login_redirect(client, monkeypatch, mock_logger):
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
"atat.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
)
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.get_user",
"atat.domain.authnid.AuthenticationContext.get_user",
lambda *args: UserFactory.create(),
)
@@ -56,7 +56,7 @@ def test_successful_login_redirect(client, monkeypatch, mock_logger):
def test_unsuccessful_login_redirect(client, monkeypatch, mock_logger):
resp = client.get(url_for("atst.login_redirect"))
resp = client.get(url_for("atat.login_redirect"))
assert resp.status_code == 401
assert "user_id" not in session
@@ -97,12 +97,12 @@ def test_protected_routes_redirect_to_login(client, app):
def test_unprotected_routes_set_user_if_logged_in(client, app, user_session):
user = UserFactory.create()
resp = client.get(url_for("atst.about"))
resp = client.get(url_for("atat.about"))
assert resp.status_code == 200
assert user.full_name not in resp.data.decode()
user_session(user)
resp = client.get(url_for("atst.about"))
resp = client.get(url_for("atat.about"))
assert resp.status_code == 200
assert user.full_name in resp.data.decode()
@@ -163,7 +163,7 @@ def test_crl_validation_on_login(
def test_creates_new_user_on_login(monkeypatch, client, ca_key):
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
"atat.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
)
cert_file = open("tests/fixtures/{}.crt".format(FIXTURE_EMAIL_ADDRESS)).read()
@@ -200,22 +200,22 @@ def test_creates_new_user_without_email_on_login(
def test_logout(app, client, monkeypatch, mock_logger):
user = UserFactory.create()
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", lambda s: True
"atat.domain.authnid.AuthenticationContext.authenticate", lambda s: True
)
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.get_user", lambda s: user,
"atat.domain.authnid.AuthenticationContext.get_user", lambda s: user,
)
# create a real session
resp = _login(client)
resp_success = client.get(url_for("users.user"))
# verify session is valid
assert resp_success.status_code == 200
client.get(url_for("atst.logout"))
client.get(url_for("atat.logout"))
resp_failure = client.get(url_for("users.user"))
# verify that logging out has cleared the session
assert resp_failure.status_code == 302
destination = urlparse(resp_failure.headers["Location"]).path
assert destination == url_for("atst.root")
assert destination == url_for("atat.root")
# verify that logout is noted in the logs
logout_msg = mock_logger.messages[-1]
assert user.dod_id in logout_msg
@@ -224,24 +224,24 @@ def test_logout(app, client, monkeypatch, mock_logger):
def test_logging_out_creates_a_flash_message(app, client, monkeypatch):
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", lambda s: True
"atat.domain.authnid.AuthenticationContext.authenticate", lambda s: True
)
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.get_user",
"atat.domain.authnid.AuthenticationContext.get_user",
lambda s: UserFactory.create(),
)
_login(client)
logout_response = client.get(url_for("atst.logout"), follow_redirects=True)
logout_response = client.get(url_for("atat.logout"), follow_redirects=True)
assert "Logged out" in logout_response.data.decode()
def test_redirected_on_login(client, monkeypatch):
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
"atat.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
)
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.get_user",
"atat.domain.authnid.AuthenticationContext.get_user",
lambda *args: UserFactory.create(),
)
target_route = url_for("users.user")
@@ -254,7 +254,7 @@ def test_error_on_invalid_crl(client, monkeypatch):
raise CRLInvalidException()
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", _raise_crl_error
"atat.domain.authnid.AuthenticationContext.authenticate", _raise_crl_error
)
response = _login(client)
assert response.status_code == 401
@@ -265,10 +265,10 @@ def test_last_login_set_when_user_logs_in(client, monkeypatch):
last_login = pendulum.now(tz="utc")
user = UserFactory.create(last_login=last_login)
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
"atat.domain.authnid.AuthenticationContext.authenticate", lambda *args: True
)
monkeypatch.setattr(
"atst.domain.authnid.AuthenticationContext.get_user", lambda *args: user
"atat.domain.authnid.AuthenticationContext.get_user", lambda *args: user
)
_login(client)
assert session["last_login"]

View File

@@ -1,7 +1,7 @@
import pytest
from atst.filters import dollars, renderAuditEvent, usPhone
from atst.models import AuditEvent
from atat.filters import dollars, renderAuditEvent, usPhone
from atat.models import AuditEvent
@pytest.mark.parametrize(

View File

@@ -5,12 +5,12 @@ from unittest.mock import Mock, MagicMock
from smtplib import SMTPException
from azure.core.exceptions import AzureError
from atst.domain.csp.cloud import MockCloudProvider
from atst.domain.csp.cloud.models import BillingInstructionCSPPayload, UserRoleCSPResult
from atst.domain.portfolios import Portfolios
from atst.models import ApplicationRoleStatus, Portfolio, FSMStates
from atat.domain.csp.cloud import MockCloudProvider
from atat.domain.csp.cloud.models import BillingInstructionCSPPayload, UserRoleCSPResult
from atat.domain.portfolios import Portfolios
from atat.models import ApplicationRoleStatus, Portfolio, FSMStates
from atst.jobs import (
from atat.jobs import (
RecordFailure,
dispatch_create_environment,
dispatch_create_application,
@@ -38,8 +38,8 @@ from tests.factories import (
TaskOrderFactory,
UserFactory,
)
from atst.models import CSPRole, EnvironmentRole, ApplicationRoleStatus, JobFailure
from atst.utils.localization import translate
from atat.models import CSPRole, EnvironmentRole, ApplicationRoleStatus, JobFailure
from atat.utils.localization import translate
@pytest.fixture(autouse=True, scope="function")
@@ -191,7 +191,7 @@ class TestCreateUserJob:
def test_create_user_sends_email(self, monkeypatch, csp, app_role_1, app_role_2):
mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail", mock)
monkeypatch.setattr("atat.jobs.send_mail", mock)
do_create_user(csp, [app_role_1.id, app_role_2.id])
assert mock.call_count == 1
@@ -219,7 +219,7 @@ def test_dispatch_create_environment(session, monkeypatch):
session.commit()
mock = Mock()
monkeypatch.setattr("atst.jobs.create_environment", mock)
monkeypatch.setattr("atat.jobs.create_environment", mock)
# When dispatch_create_environment is called
dispatch_create_environment.run()
@@ -234,7 +234,7 @@ def test_dispatch_create_application(monkeypatch):
app = ApplicationFactory.create(portfolio=portfolio)
mock = Mock()
monkeypatch.setattr("atst.jobs.create_application", mock)
monkeypatch.setattr("atat.jobs.create_application", mock)
# When dispatch_create_application is called
dispatch_create_application.run()
@@ -257,7 +257,7 @@ def test_dispatch_create_user(monkeypatch):
)
mock = Mock()
monkeypatch.setattr("atst.jobs.create_user", mock)
monkeypatch.setattr("atat.jobs.create_user", mock)
# When dispatch_create_user is called
dispatch_create_user.run()
@@ -314,7 +314,7 @@ def test_dispatch_provision_portfolio(csp, monkeypatch):
)
sm = PortfolioStateMachineFactory.create(portfolio=portfolio)
mock = Mock()
monkeypatch.setattr("atst.jobs.provision_portfolio", mock)
monkeypatch.setattr("atat.jobs.provision_portfolio", mock)
dispatch_provision_portfolio.run()
mock.delay.assert_called_once_with(portfolio_id=portfolio.id)
@@ -329,7 +329,7 @@ class TestDoProvisionPortfolio:
self, monkeypatch, csp, portfolio: Portfolio
):
mock = Mock()
monkeypatch.setattr("atst.jobs.send_PPOC_email", mock)
monkeypatch.setattr("atat.jobs.send_PPOC_email", mock)
csp._authorize.return_value = None
csp._maybe_raise.return_value = None
@@ -346,7 +346,7 @@ class TestDoProvisionPortfolio:
def test_send_ppoc_email(monkeypatch, app):
mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail", mock)
monkeypatch.setattr("atat.jobs.send_mail", mock)
ppoc_email = "example@example.com"
user_id = "user_id"
@@ -377,7 +377,7 @@ def test_provision_portfolio_create_tenant(
):
sm = PortfolioStateMachineFactory.create(portfolio=portfolio)
# mock = Mock()
# monkeypatch.setattr("atst.jobs.provision_portfolio", mock)
# monkeypatch.setattr("atat.jobs.provision_portfolio", mock)
# dispatch_provision_portfolio.run()
# mock.delay.assert_called_once_with(portfolio_id=portfolio.id)
@@ -392,7 +392,7 @@ def test_dispatch_create_environment_role(monkeypatch):
env_role = EnvironmentRoleFactory.create(application_role=app_role)
mock = Mock()
monkeypatch.setattr("atst.jobs.create_environment_role", mock)
monkeypatch.setattr("atat.jobs.create_environment_role", mock)
dispatch_create_environment_role.run()
@@ -425,7 +425,7 @@ class TestCreateEnvironmentRole:
def test_sends_email(self, monkeypatch, env_role, csp):
send_mail = Mock()
monkeypatch.setattr("atst.jobs.send_mail", send_mail)
monkeypatch.setattr("atat.jobs.send_mail", send_mail)
do_create_environment_role(csp, environment_role_id=env_role.id)
assert send_mail.call_count == 1
@@ -434,7 +434,7 @@ class TestSendTaskOrderFiles:
@pytest.fixture(scope="function")
def send_mail(self, monkeypatch):
mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail", mock)
monkeypatch.setattr("atat.jobs.send_mail", mock)
return mock
@pytest.fixture(scope="function")
@@ -443,7 +443,7 @@ class TestSendTaskOrderFiles:
return {"name": object_name}
monkeypatch.setattr(
"atst.domain.csp.files.MockFileService.download_task_order",
"atat.domain.csp.files.MockFileService.download_task_order",
_download_task_order,
)
@@ -484,7 +484,7 @@ class TestSendTaskOrderFiles:
def _raise_smtp_exception(**kwargs):
raise SMTPException
monkeypatch.setattr("atst.jobs.send_mail", _raise_smtp_exception)
monkeypatch.setattr("atat.jobs.send_mail", _raise_smtp_exception)
task_order = TaskOrderFactory.create(create_clins=[{"number": "0001"}])
send_task_order_files.run()
@@ -496,7 +496,7 @@ class TestSendTaskOrderFiles:
raise AzureError("something went wrong")
monkeypatch.setattr(
"atst.domain.csp.files.MockFileService.download_task_order",
"atat.domain.csp.files.MockFileService.download_task_order",
_download_task_order,
)
task_order = TaskOrderFactory.create(create_clins=[{"number": "0002"}])
@@ -536,7 +536,7 @@ class TestCreateBillingInstructions:
raise AzureError("something went wrong")
monkeypatch.setattr(
"atst.domain.csp.cloud.MockCloudProvider.create_billing_instruction",
"atat.domain.csp.cloud.MockCloudProvider.create_billing_instruction",
_create_billing_instruction,
)

View File

@@ -7,7 +7,7 @@ from cryptography.hazmat.backends import default_backend
from flask import template_rendered
import pendulum
from atst.utils.notification_sender import NotificationSender
from atat.utils.notification_sender import NotificationSender
import tests.factories as factories

View File

@@ -2,9 +2,9 @@ from unittest.mock import Mock
import pytest
from atst.domain.permission_sets import PermissionSets
from atst.models import Permissions
from atst.utils.context_processors import (
from atat.domain.permission_sets import PermissionSets
from atat.models import Permissions
from atat.utils.context_processors import (
get_resources_from_context,
user_can_view,
portfolio as portfolio_context,
@@ -37,7 +37,7 @@ def test_get_resources_from_context():
@pytest.fixture
def set_g(monkeypatch):
_g = Mock()
monkeypatch.setattr("atst.utils.context_processors.g", _g)
monkeypatch.setattr("atat.utils.context_processors.g", _g)
def _set_g(attr, val):
setattr(_g, attr, val)

View File

@@ -1,4 +1,4 @@
from atst.utils.flash import formatted_flash as flash
from atat.utils.flash import formatted_flash as flash
from flask import get_flashed_messages

View File

@@ -1,7 +1,7 @@
import pytest
from werkzeug.datastructures import ImmutableMultiDict
from atst.utils.form_cache import DEFAULT_CACHE_NAME, FormCache
from atat.utils.form_cache import DEFAULT_CACHE_NAME, FormCache
@pytest.fixture

View File

@@ -2,7 +2,7 @@ import random
import re
import string
from atst.utils import sha256_hex
from atat.utils import sha256_hex
def test_sha256_hex():

View File

@@ -1,5 +1,5 @@
import json
from atst.utils.json import CustomJSONEncoder
from atat.utils.json import CustomJSONEncoder
from tests.factories import AttachmentFactory

View File

@@ -1,5 +1,5 @@
import pytest
from atst.utils.localization import all_keys, translate, LocalizationInvalidKeyError
from atat.utils.localization import all_keys, translate, LocalizationInvalidKeyError
def test_looking_up_existing_key():

View File

@@ -6,7 +6,7 @@ from unittest.mock import Mock
import pytest
from atst.utils.logging import JsonFormatter, RequestContextFilter
from atat.utils.logging import JsonFormatter, RequestContextFilter
from tests.factories import UserFactory
@@ -71,8 +71,8 @@ def test_request_context_filter(logger, log_stream_content, request_ctx, monkeyp
user.id = user_uuid
user.dod_id = "5678901234"
monkeypatch.setattr("atst.utils.logging.g", Mock(current_user=user))
monkeypatch.setattr("atst.utils.logging.session", {"user_id": user_uuid})
monkeypatch.setattr("atat.utils.logging.g", Mock(current_user=user))
monkeypatch.setattr("atat.utils.logging.session", {"user_id": user_uuid})
request_ctx.request.environ["HTTP_X_REQUEST_ID"] = request_uuid
logger.info("this user is doing something")
log = json.loads(log_stream_content())

View File

@@ -1,10 +1,10 @@
import pytest
from atst.utils.mailer import (
from atat.utils.mailer import (
Mailer,
MailConnection,
RedisConnection,
)
from atst.utils.localization import translate
from atat.utils.localization import translate
from email.mime.base import MIMEBase

View File

@@ -2,7 +2,7 @@ import pytest
from unittest.mock import Mock
from tests.factories import NotificationRecipientFactory
from atst.utils.notification_sender import NotificationSender
from atat.utils.notification_sender import NotificationSender
@pytest.fixture
@@ -12,7 +12,7 @@ def notification_sender():
def test_can_send_notification(monkeypatch, notification_sender):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_notification_mail.delay", job_mock)
monkeypatch.setattr("atat.jobs.send_notification_mail.delay", job_mock)
recipient_email = "test@example.com"
email_body = "This is a test"

View File

@@ -3,9 +3,9 @@ from redis import Redis
from unittest.mock import Mock
from uuid import uuid4
from atst.utils.session_limiter import SessionLimiter
from atat.utils.session_limiter import SessionLimiter
from tests.factories import UserFactory
from atst.models.user import User
from atat.models.user import User
@pytest.fixture