def validate_schema(request):
    config = get_config(request)
    storage_path = config.get('repo.storage_path')
    repo = get_repository(os.path.join(storage_path,
                                       request.matchdict['name']))
    uuid = request.matchdict['uuid']
    content_type = request.matchdict['content_type']
    schema = get_schema(repo, content_type)
    data = json.loads(request.body)

    if not validate(schema, data):
        request.errors.status = 400
        request.errors.add(
            'body', 'schema',
            'Data does not match the schema for %s' % (content_type, ))
    elif uuid is not None and data['uuid'] != uuid:
        request.errors.status = 400
        request.errors.add('body', 'uuid',
                           'Payload UUID does not match URL UUID.')
    else:
        request.schema = schema.to_json()
        request.schema_data = data
示例#2
0
 def get(self):
     name = self.request.matchdict['name']
     storage_path = self.config.get('repo.storage_path')
     return format_repo(get_repository(os.path.join(storage_path, name)))
示例#3
0
 def get(self):
     name = self.request.matchdict['name']
     commit_id = self.request.matchdict['commit_id']
     storage_path = self.config.get('repo.storage_path')
     return pull_repository_files(
         get_repository(os.path.join(storage_path, name)), commit_id)
示例#4
0
 def collection_get(self):
     name = self.request.matchdict['name']
     content_type = self.request.matchdict['content_type']
     storage_path = self.config.get('repo.storage_path')
     return format_content_type(
         get_repository(os.path.join(storage_path, name)), content_type)
 def test_get_repository(self):
     repo = get_repository(self.workspace.working_dir)
     self.assertTrue(isinstance(repo, Repo))
     self.assertEqual(repo.working_dir, self.workspace.working_dir)