summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Mekin <amekin@crystalnix.com>2016-09-29 14:39:23 +0600
committerAndrey Mekin <amekin@crystalnix.com>2016-09-29 15:56:35 +0600
commitf1d76c6c9e957c9529be885d2281c7fc48c8b598 (patch)
tree79a6f6a08833cb82f9d128816caa20981b69b874
parent5004d1501d1350101a740714cdeabfb3b9b1d8ff (diff)
downloadomaha-server-f1d76c6c9e957c9529be885d2281c7fc48c8b598.zip
omaha-server-f1d76c6c9e957c9529be885d2281c7fc48c8b598.tar.gz
omaha-server-f1d76c6c9e957c9529be885d2281c7fc48c8b598.tar.bz2
Add support PATCH requests(Version API)
-rw-r--r--omaha_server/omaha/api.py2
-rw-r--r--omaha_server/omaha/tests/test_api.py25
2 files changed, 26 insertions, 1 deletions
diff --git a/omaha_server/omaha/api.py b/omaha_server/omaha/api.py
index 58712fe..4fda594 100644
--- a/omaha_server/omaha/api.py
+++ b/omaha_server/omaha/api.py
@@ -167,7 +167,7 @@ class ChannelViewSet(viewsets.ModelViewSet):
serializer_class = ChannelSerializer
-class VersionViewSet(BaseView):
+class VersionViewSet(BaseView, mixins.UpdateModelMixin):
queryset = Version.objects.all().order_by('-id')
serializer_class = VersionSerializer
diff --git a/omaha_server/omaha/tests/test_api.py b/omaha_server/omaha/tests/test_api.py
index 7b8abc0..09f0cb0 100644
--- a/omaha_server/omaha/tests/test_api.py
+++ b/omaha_server/omaha/tests/test_api.py
@@ -206,6 +206,31 @@ class VersionTest(BaseTest, APITestCase):
self.assertEqual(version.file_size, len(b'content'))
self.assertTrue(version.is_enabled)
+ @is_private()
+ @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/')
+ def test_update(self):
+ data = dict(
+ app=ApplicationFactory.create().id,
+ platform=PlatformFactory.create().id,
+ channel=ChannelFactory.create().id,
+ version='1.2.3.4',
+ file=SimpleUploadedFile("chrome.exe", b'content'),
+ is_enabled=False,
+ )
+ response = self.client.post(reverse(self.url), data)
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+ obj_id = response.data['id']
+ version = Version.objects.get(id=obj_id)
+ self.assertEqual(response.data, self.serializer(version).data)
+ self.assertEqual(version.file_size, len(b'content'))
+ self.assertFalse(version.is_enabled)
+ url = reverse(self.url_detail, kwargs=dict(pk=obj_id))
+ response = self.client.patch(url, dict(is_enabled=True))
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ version = Version.objects.get(id=obj_id)
+ self.assertEqual(version.file_size, len(b'content'))
+ self.assertTrue(version.is_enabled)
+
class ActionTest(BaseTest, APITestCase):
url = 'action-list'