aboutsummaryrefslogtreecommitdiffstats
path: root/laas/tests/test_action_fog_create_snapshot.py
diff options
context:
space:
mode:
Diffstat (limited to 'laas/tests/test_action_fog_create_snapshot.py')
-rw-r--r--laas/tests/test_action_fog_create_snapshot.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/laas/tests/test_action_fog_create_snapshot.py b/laas/tests/test_action_fog_create_snapshot.py
new file mode 100644
index 0000000..8cb52a0
--- /dev/null
+++ b/laas/tests/test_action_fog_create_snapshot.py
@@ -0,0 +1,76 @@
+##############################################################################
+# Copyright 2019 Parker Berberian and Others #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+##############################################################################
+from st2tests.base import BaseActionTestCase
+from actions.actions import fog_createSnapshot
+import responses
+import json
+
+
+class FogCreateSnapshotTestCase(BaseActionTestCase):
+ action_cls = fog_createSnapshot.FogCreateSnapshotAction
+
+ def setUp(self):
+ super(FogCreateSnapshotTestCase, self).setUp()
+ self.action = self.get_action_instance(config={
+ "fog": {
+ "address": "http://my.fog.com/fog/",
+ "api_key": "my_api_key",
+ "user_key": "my_user_key",
+ }
+ })
+
+ def assertGoodHeader(self, request):
+ self.assertEqual(request.headers['fog-api-token'], "my_api_key")
+ self.assertEqual(request.headers['fog-user-token'], "my_user_key")
+ # TODO: content type? only required when I send a body
+
+ @responses.activate
+ def test_fog_create_snapshot(self):
+ responses.add(responses.GET, "http://my.fog.com/fog/host", json={
+ "hosts": [
+ {"name": "fog_host1", "id": 42},
+ ]
+ })
+ responses.add(responses.GET, "http://my.fog.com/fog/host/42", json={
+ "name": "fog_host1",
+ "imagename": "orig_img",
+ "description": "test host"
+ })
+ responses.add(responses.GET, "http://my.fog.com/fog/image", json={
+ "images": [
+ {"name": "orig_img", "id": 10},
+ ]
+ })
+ responses.add(responses.GET, "http://my.fog.com/fog/image/10", json={
+ "imagePartitionTypeID": 1,
+ "toReplicate": False,
+ "isEnabled": True,
+ "compress": 6,
+ "storagegroups": 1,
+ "osID": 50,
+ "imageTypeID": 4
+ })
+ responses.add(responses.POST, "http://my.fog.com/fog/image")
+ self.action.action_service.set_value("host1", json.dumps({"fog_name": "fog_host1"}), local=False)
+
+ self.action.run(host="host1", name="my_snapshot")
+ self.assertEqual(len(responses.calls), 5)
+ self.assertGoodHeader(responses.calls[0].request)
+ self.assertGoodHeader(responses.calls[1].request)
+ self.assertGoodHeader(responses.calls[2].request)
+ self.assertGoodHeader(responses.calls[3].request)
+ self.assertGoodHeader(responses.calls[4].request)
+ self.assertEqual(json.loads(responses.calls[-1].request.body)['name'], "my_snapshot")