def create(self, request): if not request.user.is_staff: # Only an admin could register a new repository return build_response(request, 403, 'Forbidden') # Get request info name = None host = None try: content = json.loads(request.raw_post_data) name = content['name'] host = content['host'] except: msg = "Request body is not valid JSON data" return build_response(request, 400, msg) # Check data formats if not is_valid_id(name): return build_response(request, 400, 'Invalid name format') if not is_valid_url(host): return build_response(request, 400, 'Invalid URL format') # Register repository try: register_repository(name, host) except Exception, e: return build_response(request, 400, e.message)
def test_first_repository_registering(self): for r in Repository.objects.all(): r.delete() register_repository('test_repository', 'http://testrepository.com', 'testColl', 2, False) rep = Repository.objects.get(name='test_repository') self.assertTrue(rep.is_default)
def test_basic_registering_rep(self): name = 'test_repository' host = 'http://testrepository.com/' register_repository(name, host) rep = Repository.objects.get(name=name, host=host) self.assertEqual(name, rep.name) self.assertEqual(host, rep.host)
def test_register_existing_repository(self): name = 'test_repository1' host = 'http://testrepository.com/' error = False msg = None try: register_repository(name, host) except Exception, e: error = True msg = e.message
def test_repository_registering(self, name, data, err_type=None, err_msg=None): error = None try: register_repository( data['name'], data['host'], data['offering_collection'], data['resource_collection'], data['api_version'], default=data['default'] ) except Exception as e: error = e if err_type is None: self.assertEquals(error, None) if not data['host'].endswith('/'): data['host'] += '/' rep = Repository.objects.get(name=data['name'], host=data['host']) self.assertEqual(data['name'], rep.name) self.assertEqual(data['host'], rep.host) self.assertEquals(data['default'], rep.is_default) self.assertEquals(data['offering_collection'], rep.offering_collection) self.assertEquals(data['resource_collection'], rep.resource_collection) self.assertEqual(data['api_version'], rep.api_version) # Check that the default repository has been to to false if data['default']: self.assertFalse(Repository.objects.get(pk="61001bba8e05ac2115f11111").is_default) else: self.assertTrue(isinstance(error, err_type)) self.assertEquals(unicode(error), err_msg)
def create(self, request): if not request.user.is_staff: # Only an admin could register a new repository return build_response(request, 403, 'You are not authorized to register a repository') # Get request info try: content = json.loads(request.raw_post_data) is_default = content.get('is_default', False) except: msg = "Request body is not valid JSON data" return build_response(request, 400, msg) if 'name' not in content: return build_response(request, 400, 'Missing required field: name') if 'host' not in content: return build_response(request, 400, 'Missing required field: host') if 'api_version' not in content: return build_response(request, 400, 'Missing required field: api_version') if 'offering_collection' not in content: return build_response(request, 400, 'Missing required field: offering_collection') if 'resource_collection' not in content: return build_response(request, 400, 'Missing required field: resource_collection') # Check data formats if not is_valid_id(content['name']): return build_response(request, 400, 'Invalid name format') if not is_valid_id(content['offering_collection']) or ' ' in content['offering_collection']: return build_response(request, 400, 'Invalid offering_collection format: Invalid character found') if not is_valid_id(content['resource_collection']) or ' ' in content['resource_collection']: return build_response(request, 400, 'Invalid resource_collection format: Invalid character found') if not is_valid_url(content['host']): return build_response(request, 400, 'Invalid URL format') if not content['api_version'].isdigit(): return build_response(request, 400, 'Invalid api_version format: must be an integer') api_version = int(content['api_version']) if api_version != 1 and api_version != 2: return build_response(request, 400, 'Invalid api_version: Only versions 1 and 2 are supported') # Register repository try: register_repository( content['name'], content['host'], content['offering_collection'], content['resource_collection'], api_version, is_default ) except ConflictError as e: return build_response(request, 409, unicode(e)) except Exception as e: return build_response(request, 500, unicode(e)) return build_response(request, 201, 'Created')