fix: issue #159 return state_url in JSON after module build submission

This commit is contained in:
Filip Valder
2016-11-07 13:13:01 +01:00
parent 8339e389be
commit dd4790f514
3 changed files with 29 additions and 6 deletions

View File

@@ -223,6 +223,8 @@ class ModuleBuild(RidaBase):
return query.first()
def json(self):
from module_build_service.views import api_definition
return {
'id': self.id,
'name': self.name,
@@ -231,6 +233,8 @@ class ModuleBuild(RidaBase):
'state': self.state,
'state_name': INVERSE_BUILD_STATES[self.state],
'state_reason': self.state_reason,
'state_url': '{}{}'.format(api_definition['module_build_query']['url'][0],
self.id),
'scmurl': self.scmurl,
'owner': self.owner,
'time_submitted': self.time_submitted,

View File

@@ -44,6 +44,28 @@ from module_build_service.errors import (
ValidationError, Unauthorized, UnprocessableEntity, Conflict, NotFound)
from multiprocessing.dummy import Pool as ThreadPool
api_definition = {
'module_build_submit': {
'url': '/module-build-service/1/module-builds/',
'options': {
'methods': ['POST'],
}
},
'module_build_list': {
'url': '/module-build-service/1/module-builds/',
'options': {
'defaults': {'id': None},
'methods': ['GET'],
}
},
'module_build_query': {
'url': ['/module-build-service/1/module-builds/', '<int:id>'],
'options': {
'methods': ['GET'],
}
},
}
class ModuleBuildAPI(MethodView):
@@ -239,11 +261,7 @@ class ModuleBuildAPI(MethodView):
def register_v1_api():
""" Registers version 1 of Rida API. """
module_view = ModuleBuildAPI.as_view('module_builds')
app.add_url_rule('/module-build-service/1/module-builds/', defaults={'id': None},
view_func=module_view, methods=['GET'])
app.add_url_rule('/module-build-service/1/module-builds/', view_func=module_view,
methods=['POST'])
app.add_url_rule('/module-build-service/1/module-builds/<int:id>', view_func=module_view,
methods=['GET'])
for val in api_definition.values():
app.add_url_rule(''.join(val['url']), view_func=module_view, **val['options'])
register_v1_api()

View File

@@ -193,6 +193,7 @@ class TestViews(unittest.TestCase):
self.assertEquals(data['owner'], 'Homer J. Simpson')
self.assertEquals(data['id'], 31)
self.assertEquals(data['state_name'], 'wait')
self.assertEquals(data['state_url'], '/module-build-service/1/module-builds/31')
@patch('module_build_service.auth.get_username', return_value='Homer J. Simpson')
@patch('module_build_service.auth.assert_is_packager')