from werkzeug.datastructures import ImmutableMultiDict from atlas_um.applications.forms import ApplicationForm from atlas_um.auth.claims import ResourceGroups from tests.atlas_um import factories class TestApplicationForm: def test_developer_success( self, app, faker, pgdb_session, authorized_developer ): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) pgdb_session.commit() test_data = { "name": faker.pystr(), "audience": faker.pystr(), "resource_group": str(resource_group.id), } authorized_developer.claims.append( ResourceGroups( ResourceGroups.Values([resource_group.namespace_url]) ) ) with app.test_request_context(): form = ApplicationForm(formdata=ImmutableMultiDict(test_data)) assert form.validate(), form.errors def test_developer_failure_forbidden_resource_groups( self, app, faker, pgdb_session, authorized_developer ): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) pgdb_session.commit() test_data = { "name": faker.pystr(), "audience": faker.pystr(), "resource_group": str(resource_group.id), } with app.test_request_context(): form = ApplicationForm(formdata=ImmutableMultiDict(test_data)) assert not form.validate() def test_developer_failure_empty( self, app, faker, pgdb_session, authorized_developer ): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) pgdb_session.commit() test_data = {"name": faker.pystr(), "audience": faker.pystr()} with app.test_request_context(): form = ApplicationForm(formdata=ImmutableMultiDict(test_data)) assert not form.validate() def test_admin_success(self, app, faker, pgdb_session, authorized_admin): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) pgdb_session.commit() test_data = { "name": faker.pystr(), "audience": faker.pystr(), "resource_group": str(resource_group.id), } with app.test_request_context(): form = ApplicationForm(formdata=ImmutableMultiDict(test_data)) assert form.validate(), form.errors def test_admin_failure_failure_empty( self, app, faker, pgdb_session, authorized_admin ): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) pgdb_session.commit() test_data = {"name": faker.pystr(), "audience": faker.pystr()} with app.test_request_context(): form = ApplicationForm(formdata=ImmutableMultiDict(test_data)) assert not form.validate(), form.errors