from flask import url_for, get_flashed_messages from tests.factories import ( UserFactory, PortfolioFactory, PortfolioRoleFactory, EnvironmentRoleFactory, EnvironmentFactory, ApplicationFactory, ) from atst.domain.applications import Applications from atst.domain.portfolios import Portfolios from atst.models.portfolio_role import Status as PortfolioRoleStatus from tests.utils import captured_templates def create_environment(user): portfolio = PortfolioFactory.create() portfolio_role = PortfolioRoleFactory.create(portfolio=portfolio, user=user) application = ApplicationFactory.create(portfolio=portfolio) return EnvironmentFactory.create(application=application, name="new environment!") def test_environment_access_with_env_role(client, user_session): user = UserFactory.create() environment = create_environment(user) env_role = EnvironmentRoleFactory.create( user=user, environment=environment, role="developer" ) user_session(user) response = client.get( url_for("applications.access_environment", environment_id=environment.id) ) assert response.status_code == 302 assert "csp-environment-access" in response.location def test_environment_access_with_no_role(client, user_session): user = UserFactory.create() environment = create_environment(user) user_session(user) response = client.get( url_for("applications.access_environment", environment_id=environment.id) ) assert response.status_code == 404