From 98d6da7db95a078ef9d3920c5d5a4182441b4a1b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Mon, 21 May 2012 17:32:40 +0200
Subject: [PATCH] Cover basic cases specific to Computer.PUT.

---
 .../testVifibSlaposRestAPIV1.py               | 150 +++++++++++++++++-
 .../vifib_slapos_rest_api_v1_test/bt/revision |   2 +-
 2 files changed, 146 insertions(+), 6 deletions(-)

diff --git a/master/bt5/vifib_slapos_rest_api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py b/master/bt5/vifib_slapos_rest_api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py
index 822082be1..7065ec7e8 100644
--- a/master/bt5/vifib_slapos_rest_api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py
+++ b/master/bt5/vifib_slapos_rest_api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py
@@ -1531,16 +1531,156 @@ class TestComputerPUT(VifibSlaposRestAPIV1MixinBase):
     self.assertComputerPUTSimulatorEmpty()
 
   def test_software_release_status(self):
-    raise NotImplementedError
+    d = {
+      "partition": [
+        {
+          "title": "part0",
+          "public_ip": "::0",
+          "private_ip": "127.0.0.0",
+          "tap_interface": "tap0"
+        }
+      ],
+      "software": [
+        {
+          "software_release": "software_release",
+          "status": "wrong status",
+          "log": "Installation log"
+        }
+      ]
+    }
+
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'computer',
+        self.computer.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.computer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(400)
+    self.assertResponseJson()
+    self.assertEqual({'software_0': ['Status "wrong status" is incorrect.']},
+      self.json_response)
+    self.assertComputerPUTSimulatorEmpty()
 
   def test_only_partition(self):
-    raise NotImplementedError
+    d = {
+      "partition": [
+        {
+          "title": "part0",
+          "public_ip": "::0",
+          "private_ip": "127.0.0.0",
+          "tap_interface": "tap0"
+        }
+      ]
+    }
+
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'computer',
+        self.computer.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.computer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(204)
+    self.assertComputerPUTSimulator([
+      {'recmethod': 'Computer_updateFromJson',
+      'recargs': ({
+        'partition':
+          [{
+            'public_ip': '::0',
+            'tap_interface': 'tap0',
+            'private_ip': '127.0.0.0',
+            'title': 'part0'}],
+        },),
+      'reckwargs': {}}])
 
   def test_only_software(self):
-    raise NotImplementedError
+    d = {
+      "software": [
+        {
+          "software_release": "software_release",
+          "status": "uninstalled",
+          "log": "Installation log"
+        }
+      ]
+    }
+
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'computer',
+        self.computer.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.computer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(204)
+    self.assertComputerPUTSimulator([
+      {'recmethod': 'Computer_updateFromJson',
+      'recargs': ({
+        'software':
+          [{
+            'status': 'uninstalled',
+            'software_release': 'software_release',
+            'log': 'Installation log'}]},),
+      'reckwargs': {}}])
 
   def test_partition_object_incorrect(self):
-    raise NotImplementedError
+    d = {
+      "partition": [
+        {
+          "title": "part0",
+          "public_ip": "::0",
+          "private_ip": "127.0.0.0"
+        }
+      ],
+      "software": [
+        {
+          "software_release": "software_release",
+          "status": "uninstalled",
+          "log": "Installation log"
+        }
+      ]
+    }
+
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'computer',
+        self.computer.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.computer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(400)
+    self.assertResponseJson()
+    self.assertEqual({'partition_0': ['Missing key "tap_interface".']},
+      self.json_response)
+    self.assertComputerPUTSimulatorEmpty()
 
   def test_software_object_incorrect(self):
-    raise NotImplementedError
+    d = {
+      "partition": [
+        {
+          "title": "part0",
+          "public_ip": "::0",
+          "private_ip": "127.0.0.0",
+          "tap_interface": "tap0"
+        }
+      ],
+      "software": [
+        {
+          "software_release": "software_release",
+          "status": "uninstalled",
+        }
+      ]
+    }
+
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'computer',
+        self.computer.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.computer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(400)
+    self.assertResponseJson()
+    self.assertEqual({'software_0': ['Missing key "log".']},
+      self.json_response)
+    self.assertComputerPUTSimulatorEmpty()
diff --git a/master/bt5/vifib_slapos_rest_api_v1_test/bt/revision b/master/bt5/vifib_slapos_rest_api_v1_test/bt/revision
index fc9afb48e..2b82dfea3 100644
--- a/master/bt5/vifib_slapos_rest_api_v1_test/bt/revision
+++ b/master/bt5/vifib_slapos_rest_api_v1_test/bt/revision
@@ -1 +1 @@
-59
\ No newline at end of file
+60
\ No newline at end of file
-- 
2.30.9