From e617e7469daf580dda37eba63f9d44d749d8db30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Thu, 10 May 2012 16:27:12 +0200
Subject: [PATCH] Test instance PUT (positive scenarios).

---
 .../testVifibSlaposRestAPIV1.py               | 85 +++++++++++++++++++
 .../vifib_slapos_rest_api_v1_test/bt/revision |  2 +-
 2 files changed, 86 insertions(+), 1 deletion(-)

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 31fd64704..fd447c502 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
@@ -790,3 +790,88 @@ class TestInstancePOSTbang(VifibSlaposRestAPIV1BangMixin):
     self.assertResponseJson()
     self.assertEqual({'log': 'bool is not unicode.'}, self.json_response)
     self.assertInstanceBangSimulatorEmpty()
+
+class TestInstancePUT(VifibSlaposRestAPIV1InstanceMixin):
+  def afterSetUp(self):
+    super(TestInstancePUT, self).afterSetUp()
+    self.instance_put_simulator = tempfile.mkstemp()[1]
+    self.software_instance.setTitle = Simulator(self.instance_put_simulator,
+      'setTitle')
+    self.software_instance.setConnectionXml = Simulator(self.instance_put_simulator,
+      'setConnectionXml')
+    transaction.commit()
+
+  def beforeTearDown(self):
+    super(TestInstancePUT, self).beforeTearDown()
+    if os.path.exists(self.instance_put_simulator):
+      os.unlink(self.instance_put_simulator)
+
+  def assertInstancePUTSimulator(self, l):
+    stored = eval(open(self.instance_put_simulator).read())
+    self.assertEqual(stored, l)
+
+  def test(self):
+    d = {
+      'title': 'New Title' + self.test_random_id,
+      'connection': {'url': 'http://new' + self.test_random_id}
+    }
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'instance',
+        self.software_instance.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.customer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(200)
+    self.assertResponseJson()
+    self.assertEqual({
+      "title": "Modified.",
+      "connection": "Modified."
+      },
+      self.json_response)
+    self.assertInstancePUTSimulator([{'recargs': (d['title'],), 'reckwargs': {},
+      'recmethod': 'setTitle'},
+    {'recargs': ('<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n  '\
+      '<parameter id="url">http://new%s</parameter>\n</instance>\n'%
+        self.test_random_id,), 'reckwargs': {}, 'recmethod': 'setConnectionXml'}])
+
+  def test_same_title(self):
+    d = {
+      'title': self.software_instance.getTitle(),
+      'connection': {'url': 'http://new' + self.test_random_id}
+    }
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'instance',
+        self.software_instance.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.customer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(200)
+    self.assertResponseJson()
+    self.assertEqual({"connection": "Modified."}, self.json_response)
+    self.assertInstancePUTSimulator([
+      {'recargs': ('<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n  '\
+      '<parameter id="url">http://new%s</parameter>\n</instance>\n'%
+        self.test_random_id,), 'reckwargs': {}, 'recmethod': 'setConnectionXml'}])
+
+  def test_same_connection(self):
+    d = {
+      'title': 'New Title 2' + self.test_random_id,
+      'connection': self.software_instance.getConnectionXmlAsDict()
+    }
+    self.connection.request(method='PUT',
+      url='/'.join([self.api_path, 'instance',
+        self.software_instance.getRelativeUrl()]),
+      body=json.dumps(d),
+      headers={'REMOTE_USER': self.customer_reference})
+    self.prepareResponse()
+    self.assertBasicResponse()
+    self.assertResponseCode(200)
+    self.assertResponseJson()
+    self.assertEqual({
+      "title": "Modified.",
+      },
+      self.json_response)
+    self.assertInstancePUTSimulator([{'recargs': (d['title'],),
+      'reckwargs': {}, 'recmethod': 'setTitle'}])
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 7c091989d..c24b6ae77 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 @@
-37
\ No newline at end of file
+38
\ No newline at end of file
-- 
2.30.9