def update_domain(self, context, domain_id, values): domain = self._get_domain(context, domain_id) domain.update(values) try: domain.save(self.session) except exceptions.Duplicate: raise exceptions.DuplicateDomain() return dict(domain)
def create_domain(self, context, values): domain = models.Domain() domain.update(values) try: domain.save(self.session) except exceptions.Duplicate: raise exceptions.DuplicateDomain() return dict(domain)
class ApiV1DomainsTest(ApiV1Test): __test__ = True def test_create_domain(self): # Create a server self.create_server() # Create a domain fixture = self.get_domain_fixture(0) response = self.post('domains', data=fixture) self.assertIn('id', response.json) self.assertIn('name', response.json) self.assertEqual(response.json['name'], fixture['name']) def test_create_domain_junk(self): # Create a server self.create_server() # Create a domain fixture = self.get_domain_fixture(0) # Add a junk property fixture['junk'] = 'Junk Field' # Ensure it fails with a 400 self.post('domains', data=fixture, status_code=400) def test_create_domain_no_servers(self): # Create a domain fixture = self.get_domain_fixture(0) self.post('domains', data=fixture, status_code=500) @patch.object(central_service.Service, 'create_domain', side_effect=rpc_common.Timeout()) def test_create_domain_timeout(self, _): # Create a domain fixture = self.get_domain_fixture(0) self.post('domains', data=fixture, status_code=504) @patch.object(central_service.Service, 'create_domain', side_effect=exceptions.DuplicateDomain()) def test_create_domain_duplicate(self, _): # Create a domain fixture = self.get_domain_fixture(0) self.post('domains', data=fixture, status_code=409) def test_create_domain_null_ttl(self): # Create a domain fixture = self.get_domain_fixture(0) fixture['ttl'] = None self.post('domains', data=fixture, status_code=400) def test_get_domains(self): response = self.get('domains') self.assertIn('domains', response.json) self.assertEqual(0, len(response.json['domains'])) # Create a domain self.create_domain() response = self.get('domains') self.assertIn('domains', response.json) self.assertEqual(1, len(response.json['domains'])) # Create a second domain self.create_domain(fixture=1) response = self.get('domains') self.assertIn('domains', response.json) self.assertEqual(2, len(response.json['domains'])) @patch.object(central_service.Service, 'get_domains', side_effect=rpc_common.Timeout()) def test_get_domains_timeout(self, _): self.get('domains', status_code=504) def test_create_invalid_name(self): # Prepare a domain fixture = self.get_domain_fixture(0) invalid_names = [ 'org', 'example.org', 'example.321', ] for invalid_name in invalid_names: fixture['name'] = invalid_name # Create a record response = self.post('domains', data=fixture, status_code=400) self.assertNotIn('id', response.json) def test_create_invalid_email(self): # Prepare a domain fixture = self.get_domain_fixture(0) invalid_emails = [ 'org', 'example.org', 'bla.example.org', 'org.', 'example.org.', 'bla.example.org.', 'bla.example.org.', ] for invalid_email in invalid_emails: fixture['email'] = invalid_email # Create a record response = self.post('domains', data=fixture, status_code=400) self.assertNotIn('id', response.json) def test_get_domain(self): # Create a domain domain = self.create_domain() response = self.get('domains/%s' % domain['id']) self.assertIn('id', response.json) self.assertEqual(response.json['id'], domain['id']) @patch.object(central_service.Service, 'get_domain', side_effect=rpc_common.Timeout()) def test_get_domain_timeout(self, _): # Create a domain domain = self.create_domain() self.get('domains/%s' % domain['id'], status_code=504) def test_get_domain_missing(self): self.get('domains/2fdadfb1-cf96-4259-ac6b-bb7b6d2ff980', status_code=404) def test_update_domain(self): # Create a domain domain = self.create_domain() data = {'email': 'prefix-%s' % domain['email']} response = self.put('domains/%s' % domain['id'], data=data) self.assertIn('id', response.json) self.assertEqual(response.json['id'], domain['id']) self.assertIn('email', response.json) self.assertEqual(response.json['email'], 'prefix-%s' % domain['email']) def test_update_domain_junk(self): # Create a domain domain = self.create_domain() data = {'email': 'prefix-%s' % domain['email'], 'junk': 'Junk Field'} self.put('domains/%s' % domain['id'], data=data, status_code=400) def test_update_domain_name_fail(self): # Create a domain domain = self.create_domain() data = {'name': 'renamed.com.'} self.put('domains/%s' % domain['id'], data=data, status_code=400) def test_update_domain_null_ttl(self): # Create a domain domain = self.create_domain() data = {'ttl': None} self.put('domains/%s' % domain['id'], data=data, status_code=400) @patch.object(central_service.Service, 'update_domain', side_effect=rpc_common.Timeout()) def test_update_domain_timeout(self, _): # Create a domain domain = self.create_domain() data = {'email': 'prefix-%s' % domain['email']} self.put('domains/%s' % domain['id'], data=data, status_code=504) @patch.object(central_service.Service, 'update_domain', side_effect=exceptions.DuplicateDomain()) def test_update_domain_duplicate(self, _): # Create a domain domain = self.create_domain() data = {'email': 'prefix-%s' % domain['email']} self.put('domains/%s' % domain['id'], data=data, status_code=409) def test_update_domain_missing(self): data = {'email': '*****@*****.**'} self.put('domains/2fdadfb1-cf96-4259-ac6b-bb7b6d2ff980', data=data, status_code=404) def test_delete_domain(self): # Create a domain domain = self.create_domain() self.delete('domains/%s' % domain['id']) # Esnure we can no longer fetch the domain self.get('domains/%s' % domain['id'], status_code=404) @patch.object(central_service.Service, 'delete_domain', side_effect=rpc_common.Timeout()) def test_delete_domain_timeout(self, _): # Create a domain domain = self.create_domain() self.delete('domains/%s' % domain['id'], status_code=504) def test_delete_domain_missing(self): self.delete('domains/2fdadfb1-cf96-4259-ac6b-bb7b6d2ff980', status_code=404)