def setUp(self): self.fixture = fixtures.ServiceFixture() self.project = self.fixture.project self.associated_certification = factories.ServiceCertificationFactory() self.project.certifications.add(self.associated_certification) self.new_certification = factories.ServiceCertificationFactory() self.url = factories.ProjectFactory.get_url( self.project, action='update_certifications')
def test_certification_state_is_erred_if_project_certifications_is_not_a_subset_of_service_certifications( self): self.client.force_authenticate(self.fixture.owner) link = self.fixture.service_project_link service_certification = factories.ServiceCertificationFactory() project_certification = factories.ServiceCertificationFactory() link.service.settings.certifications.add(service_certification) link.project.certifications.add(project_certification) url = factories.ProjectFactory.get_url(link.project) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIsNotNone('validation_state', response.data['services'][0]) self.assertEqual(response.data['services'][0]['validation_state'], "ERRED")
def test_openstack_tenant_settings_certifications_are_not_copied_if_scope_is_not_tenant(self): instance = factories.InstanceFactory() certification = structure_factories.ServiceCertificationFactory() instance.service_project_link.service.settings.certifications.add(certification) settings = factories.OpenStackTenantServiceSettingsFactory(scope=instance) self.assertFalse(settings.certifications.exists())
def test_link_validation_state_is_ERRED_if_service_does_not_satisfy_project_certifications( self): certification = factories.ServiceCertificationFactory() self.assertEqual(self.link.States.OK, self.link.validation_state) self.link.project.certifications.add(certification) self.assertEqual(self.link.States.ERRED, self.link.validation_state)
def test_link_validation_state_is_OK_if_project_certifications_is_a_subset_of_service_certifications( self): certifications = factories.ServiceCertificationFactory.create_batch(2) self.link.project.certifications.add(*certifications) certifications.append(factories.ServiceCertificationFactory()) self.link.service.settings.certifications.add(*certifications) self.assertEqual(self.link.States.OK, self.link.validation_state)
def test_service_certification_state_is_ok_if_project_certifications_is_a_subset_of_service_certifications( self, ): self.client.force_authenticate(self.fixture.owner) link = self.fixture.service_project_link project_certifications = [factories.ServiceCertificationFactory()] service_certifications = project_certifications + [ factories.ServiceCertificationFactory() ] link.service.settings.certifications.add(*service_certifications) link.project.certifications.add(*project_certifications) url = factories.ProjectFactory.get_url(link.project) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIsNotNone('validation_state', response.data['services'][0]) self.assertEqual(response.data['services'][0]['validation_state'], "OK")
def test_openstack_tenant_service_certifications_are_removed_if_tenant_settings_certifications_are_removed(self): tenant = openstack_factories.TenantFactory() tenant_service = factories.OpenStackTenantServiceFactory(settings__scope=tenant) new_certification = structure_factories.ServiceCertificationFactory() tenant.service_project_link.service.settings.certifications.add(new_certification) self.assertEqual(tenant_service.settings.certifications.count(), 1) tenant.service_project_link.service.settings.certifications.clear() self.assertEqual(tenant.service_project_link.service.settings.certifications.count(), 0) self.assertEquals(tenant_service.settings.certifications.count(), 0)
def test_openstack_tenant_settings_certifications_are_not_copied_on_update(self): tenant = openstack_factories.TenantFactory() certification = structure_factories.ServiceCertificationFactory() tenant.service_project_link.service.settings.certifications.add(certification) settings = factories.OpenStackTenantServiceSettingsFactory(scope=tenant) self.assertEquals(settings.certifications.count(), 1) settings.name = 'new_name' settings.save() self.assertEquals(settings.certifications.count(), 1) self.assertEquals(settings.certifications.first().pk, certification.pk)
def test_openstack_tenant_service_certifications_are_update_when_tenant_settings_certification_are_added(self): tenant = openstack_factories.TenantFactory() tenant_service1 = factories.OpenStackTenantServiceFactory(settings__scope=tenant) tenant_service2 = factories.OpenStackTenantServiceFactory(settings__scope=tenant) self.assertEqual(tenant_service1.settings.certifications.count(), 0) self.assertEqual(tenant_service2.settings.certifications.count(), 0) new_certification = structure_factories.ServiceCertificationFactory() tenant.service_project_link.service.settings.certifications.add(new_certification) self.assertTrue(tenant_service1.settings.certifications.filter(pk__in=[new_certification.pk]).exists()) self.assertTrue(tenant_service2.settings.certifications.filter(pk__in=[new_certification.pk]).exists())
def test_resource_cannot_be_created_for_invalid_service_project_link(self): self.fixture.project.certifications.add(factories.ServiceCertificationFactory()) self.assertFalse(self.fixture.service_project_link.is_valid) payload = { 'service_project_link': factories.TestServiceProjectLinkFactory.get_url(self.fixture.service_project_link), 'name': 'impossible resource', } url = factories.TestNewInstanceFactory.get_list_url() self.client.force_authenticate(user=self.fixture.staff) response = self.client.post(url, payload) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertIn('service_project_link', response.data)
def test_user_can_specify_certifications(self): self.client.force_authenticate(self.fixture.owner) data = self._get_valid_project_payload(self.fixture.customer) certificate = factories.ServiceCertificationFactory() data['certifications'] = [{ "url": factories.ServiceCertificationFactory.get_url(certificate) }] response = self.client.post(factories.ProjectFactory.get_list_url(), data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertTrue( Project.objects.filter(name=data['name'], customer=self.fixture.customer).exists()) self.assertTrue( models.ServiceCertification.objects.filter( projects__name=data['name'], name=certificate.name).exists())