from slugify import slugify from werkzeug.datastructures import ImmutableMultiDict from atlas_um.admin_settings import forms from tests.atlas_um import factories class TestBusinessUnitForm: def test_success(self, app, pgdb_session, faker): with app.test_request_context(): formdata = {"name": faker.pystr(), "is_active": faker.pybool()} form = forms.BusinessUnitForm( formdata=ImmutableMultiDict(formdata) ) assert form.validate() def test_failure_missed_name(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.BusinessUnitForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): name = faker.pystr() existing_instance = factories.BusinessUnitFactory.build(name=name) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.BusinessUnitForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_slug(self, app, pgdb_session, faker): name = faker.pystr() name2 = faker.pystr() slug = slugify(name) existing_instance = factories.BusinessUnitFactory.build( name=name2, slug=slug ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = {"name": name, "is_active": faker.pybool()} form = forms.BusinessUnitForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors class TestJobCategoryForm: def test_success(self, app, pgdb_session, faker): with app.test_request_context(): formdata = {"name": faker.pystr(), "is_active": faker.pybool()} form = forms.JobCategoryForm(formdata=ImmutableMultiDict(formdata)) assert form.validate() def test_failure_missed_name(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.JobCategoryForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): name = faker.pystr() existing_instance = factories.JobCategoryFactory.build(name=name) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.JobCategoryForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_slug(self, app, pgdb_session, faker): name = faker.pystr() name2 = faker.pystr() slug = slugify(name) existing_instance = factories.JobCategoryFactory.build( name=name2, slug=slug ) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.JobCategoryForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors class TestPersonnelTypeForm: def test_success(self, app, pgdb_session, faker): with app.test_request_context(): formdata = {"name": faker.pystr(), "is_active": faker.pybool()} form = forms.PersonnelTypeForm( formdata=ImmutableMultiDict(formdata) ) assert form.validate() def test_failure_missed_name(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.PersonnelTypeForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): name = faker.pystr() existing_instance = factories.PersonnelTypeFactory.build(name=name) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.PersonnelTypeForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_slug(self, app, pgdb_session, faker): name = faker.pystr() name2 = faker.pystr() slug = slugify(name) existing_instance = factories.PersonnelTypeFactory.build( name=name2, slug=slug ) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.PersonnelTypeForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors class TestTagForm: def test_success(self, app, pgdb_session, faker): with app.test_request_context(): formdata = {"name": faker.pystr(), "is_active": faker.pybool()} form = forms.TagForm(formdata=ImmutableMultiDict(formdata)) assert form.validate() def test_failure_missed_name(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.TagForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): name = faker.pystr() existing_instance = factories.TagFactory.build(name=name) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.TagForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_slug(self, app, pgdb_session, faker): name = faker.pystr() name2 = faker.pystr() slug = slugify(name) existing_instance = factories.TagFactory.build(name=name2, slug=slug) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.TagForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors class TestResourceGroupForm: def test_success(self, app, pgdb_session, faker): with app.test_request_context(): formdata = {"name": faker.pystr(), "is_active": faker.pybool()} form = forms.ResourceGroupForm( formdata=ImmutableMultiDict(formdata) ) assert form.validate() def test_failure_missed_name(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.ResourceGroupForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): name = faker.pystr() existing_instance = factories.ResourceGroupFactory.build(name=name) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.ResourceGroupForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_namespace_url(self, app, pgdb_session, faker): name = faker.pystr() name2 = faker.pystr() namespace_url = slugify(name) existing_instance = factories.ResourceGroupFactory.build( name=name2, namespace_url=namespace_url ) pgdb_session.add(existing_instance) formdata = {"name": name, "is_active": faker.pybool()} form = forms.ResourceGroupForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "name" in form.errors def test_failure_existing_external_id(self, app, pgdb_session, faker): name = faker.pystr() external_id = faker.pystr() existing_instance = factories.ResourceGroupFactory.build( name=name, external_id=external_id ) pgdb_session.add(existing_instance) formdata = { "name": name, "is_active": faker.pybool(), "external_id": external_id, } form = forms.ResourceGroupForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "external_id" in form.errors def test_invalid_session_ttl(self, app, pgdb_session, faker): with app.test_request_context(): formdata = { "name": faker.pystr(), "is_active": faker.pybool(), "session_ttl": faker.pystr(), "active_session_ttl": faker.pystr(), } form = forms.ResourceGroupForm( formdata=ImmutableMultiDict(formdata) ) assert not form.validate() assert "session_ttl" in form.errors assert "active_session_ttl" in form.errors class TestClaimNameForm: def test_success(self, app, pgdb_session, faker): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) pgdb_session.commit() with app.test_request_context(): formdata = { "friendly": faker.pystr(), "is_active": faker.pybool(), "resource_group_id": resource_group.id, } form = forms.ClaimNameForm(formdata=ImmutableMultiDict(formdata)) assert form.validate() def test_failure_missed_required_fields(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.ClaimNameForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) friendly = faker.pystr() existing_instance = factories.ClaimNameFactory.build( friendly=friendly, resource_group=resource_group ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "resource_group_id": resource_group.id, } form = forms.ClaimNameForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors def test_failure_existing_external_id(self, app, pgdb_session, faker): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) friendly = faker.pystr() external_id = faker.pystr() existing_instance = factories.ClaimNameFactory.build( friendly=friendly, external_id=external_id, resource_group=resource_group, ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "external_id": external_id, "resource_group_id": resource_group.id, } form = forms.ClaimNameForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "external_id" in form.errors def test_failure_existing_path(self, app, pgdb_session, faker): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) friendly = faker.pystr() friendly2 = faker.pystr() path = slugify(friendly) existing_instance = factories.ClaimNameFactory.build( friendly=friendly2, resource_group=resource_group, path=path ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "resource_group_id": resource_group.id, } form = forms.ClaimNameForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors def test_failure_existing_external_id_slug(self, app, pgdb_session, faker): resource_group = factories.ResourceGroupFactory.build() pgdb_session.add(resource_group) friendly = faker.pystr() friendly2 = faker.pystr() external_id = slugify(friendly) existing_instance = factories.ClaimNameFactory.build( friendly=friendly2, resource_group=resource_group, external_id=external_id, ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "resource_group_id": resource_group.id, } form = forms.ClaimNameForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors class TestClaimValueForm: def test_success(self, app, pgdb_session, faker): claim_name = factories.ClaimNameFactory.build() pgdb_session.add(claim_name) pgdb_session.commit() with app.test_request_context(): formdata = { "friendly": faker.pystr(), "is_active": faker.pybool(), "claim_name_id": claim_name.id, } form = forms.ClaimValueForm(formdata=ImmutableMultiDict(formdata)) assert form.validate() def test_failure_missed_required_fields(self, app, pgdb_session, faker): formdata = {"is_active": faker.pybool()} form = forms.ClaimValueForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors def test_failure_invalid_components(self, app, pgdb_session, faker): formdata = { "friendly": faker.pystr(), "is_active": faker.pybool(), "components": "wrong_data", } form = forms.ClaimValueForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "components" in form.errors def test_failure_existing_name(self, app, pgdb_session, faker): claim_name = factories.ClaimNameFactory.build() pgdb_session.add(claim_name) friendly = faker.pystr() existing_instance = factories.ClaimValueFactory.build( friendly=friendly, claim_name=claim_name ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "claim_name_id": claim_name.id, } form = forms.ClaimValueForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors def test_failure_existing_external_id(self, app, pgdb_session, faker): claim_name = factories.ClaimNameFactory.build() pgdb_session.add(claim_name) friendly = faker.pystr() external_id = faker.pystr() existing_instance = factories.ClaimValueFactory.build( friendly=friendly, external_id=external_id, claim_name=claim_name ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "external_id": external_id, "claim_name_id": claim_name.id, } form = forms.ClaimValueForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "external_id" in form.errors def test_failure_existing_external_id_slug(self, app, pgdb_session, faker): claim_name = factories.ClaimNameFactory.build() pgdb_session.add(claim_name) friendly = faker.pystr() friendly2 = faker.pystr() external_id = slugify(friendly) existing_instance = factories.ClaimValueFactory.build( friendly=friendly2, claim_name=claim_name, external_id=external_id ) pgdb_session.add(existing_instance) pgdb_session.commit() formdata = { "friendly": friendly, "is_active": faker.pybool(), "claim_name_id": claim_name.id, } form = forms.ClaimValueForm(formdata=ImmutableMultiDict(formdata)) assert not form.validate() assert "friendly" in form.errors class TestInternalUserDomainForm: def test_success(self, app, pgdb_session, faker): with app.test_request_context(): formdata = {"domain": faker.pystr()} form = forms.InternalUserDomainForm( formdata=ImmutableMultiDict(formdata) ) assert form.validate() def test_failure_missed_domain(self, app, pgdb_session, faker): formdata = {} form = forms.InternalUserDomainForm( formdata=ImmutableMultiDict(formdata) ) assert not form.validate() assert "domain" in form.errors def test_failure_existing_domain(self, app, pgdb_session, faker): domain = faker.pystr() existing_instance = factories.InternalUserDomainFactory.build( domain=domain ) pgdb_session.add(existing_instance) formdata = {"domain": domain} form = forms.InternalUserDomainForm( formdata=ImmutableMultiDict(formdata) ) assert not form.validate() assert "domain" in form.errors