Skip to content

Commit d8bf404

Browse files
author
Gabriel Monroy
committed
Merge pull request #456 from opdemand/455-get-config
Get returns current Config, not latest Config. Fixes #455.
2 parents 2980404 + 263df70 commit d8bf404

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

api/tests/test_release.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,25 @@ def test_release_rollback(self):
210210
self.assertNotEqual(release1['uuid'], release5['uuid'])
211211
self.assertEqual(release1['build'], release5['build'])
212212
self.assertEqual(release1['config'], release5['config'])
213+
# check to see that the current config is actually the initial one
214+
url = "/api/apps/{app_id}/config".format(**locals())
215+
response = self.client.get(url)
216+
self.assertEqual(response.status_code, 200)
217+
self.assertEqual(response.data['values'], json.dumps({}))
218+
# rollback to #3 and see that it has the correct config
219+
url = "/api/apps/{app_id}/releases/rollback/".format(**locals())
220+
body = {'version': 3}
221+
response = self.client.post(
222+
url, json.dumps(body), content_type='application/json')
223+
self.assertEqual(response.status_code, 201)
224+
url = "/api/apps/{app_id}/config".format(**locals())
225+
response = self.client.get(url)
226+
self.assertEqual(response.status_code, 200)
227+
values = json.loads(response.data['values'])
228+
self.assertIn('NEW_URL1', values)
229+
self.assertEqual('http://localhost:8080/', values['NEW_URL1'])
230+
self.assertIn('PATH', values)
231+
self.assertEqual('bin:/usr/local/bin:/usr/bin:/bin', values['PATH'])
213232

214233
def test_release_str(self):
215234
"""Test the text representation of a release."""

api/views.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,14 @@ class AppConfigViewSet(BaseAppViewSet):
579579
model = models.Config
580580
serializer_class = serializers.ConfigSerializer
581581

582+
def get_object(self, *args, **kwargs):
583+
"""Return the Config associated with the App's latest Release."""
584+
app = get_object_or_404(models.App, id=self.kwargs['id'])
585+
user = self.request.user
586+
if user == app.owner or user in get_users_with_perms(app):
587+
return app.release_set.latest().config
588+
raise PermissionDenied()
589+
582590
def post_save(self, obj, created=False):
583591
if created:
584592
models.release_signal.send(

0 commit comments

Comments
 (0)