Ensure that the returned project contains the correct etag.

The etag of the post_internal response was used, which is NOT the
same as the etag of the project document itself.
This commit is contained in:
2016-04-25 11:45:52 +02:00
parent 5c590c4dc4
commit 4edb8cfd39
2 changed files with 11 additions and 0 deletions

View File

@@ -149,6 +149,12 @@ def _create_new_project(project_name, user_id, overrides):
return abort_with_error(status)
project.update(result)
# Now re-fetch the etag, as both the initial document and the returned
# result do not contain the same etag as the database.
document = current_app.data.driver.db['projects'].find_one(project['_id'],
projection={'_etag': 1})
project.update(document)
log.info('Created project %s for user %s', project['_id'], user_id)
return project

View File

@@ -50,6 +50,11 @@ class ProjectCreationTest(AbstractPillarTest):
self.assertEqual('p-%s' % project_id, project['url'])
self.assertEqual(1, len(project['permissions']['groups']))
# Check the etag
resp = self.client.get('/projects/%s' % project_id)
from_db = json.loads(resp.data)
self.assertEqual(from_db['_etag'], project['_etag'])
group_id = ObjectId(project['permissions']['groups'][0]['group'])
# Check that there is a group for the project, and that the user is member of it.