summaryrefslogtreecommitdiff
path: root/heatclient/tests
diff options
context:
space:
mode:
authorricolin <rico.lin@easystack.cn>2016-11-15 08:39:07 +0800
committerRico Lin <rico.lin.guanyu@gmail.com>2017-05-17 09:30:10 +0000
commit7998d7bb3fdce093df2c88e5b82b1bfa9db5560b (patch)
tree39fcbf19f7f141bfd3f7420e95cda23e4c644c37 /heatclient/tests
parenta80995ddd0a1ce7ad95df048bc5b6c5fad526d19 (diff)
downloadpython-heatclient-7998d7bb3fdce093df2c88e5b82b1bfa9db5560b.tar.gz
Add optional arguments '-y' in CLI:snapshot-delete
There is no judgement before use the cli: heat snapshot-delete. So I add it. Partial-Bug: #1642490 Depends-On: If7b515dff64a18f56046b890279c2c59b0ab9dc7 Change-Id: I6e82630816e54aa2d98c3653ab43b865f445e881
Diffstat (limited to 'heatclient/tests')
-rw-r--r--heatclient/tests/unit/test_shell.py64
1 files changed, 63 insertions, 1 deletions
diff --git a/heatclient/tests/unit/test_shell.py b/heatclient/tests/unit/test_shell.py
index abb5845..8ac91d3 100644
--- a/heatclient/tests/unit/test_shell.py
+++ b/heatclient/tests/unit/test_shell.py
@@ -32,6 +32,7 @@ import testscenarios
import testtools
import yaml
+from heatclient._i18n import _
from heatclient.common import http
from heatclient.common import utils
from heatclient import exc
@@ -2225,6 +2226,65 @@ class ShellTestUserPass(ShellBase):
resp = self.shell('snapshot-show teststack/1 2')
self.assertEqual(resp_dict, jsonutils.loads(resp))
+ # the main thing this @mock.patch is doing here is keeping
+ # sys.stdin untouched for later tests
+ @mock.patch('sys.stdin', new_callable=six.StringIO)
+ def test_snapshot_delete_prompt_with_tty(self, ms):
+ self.register_keystone_auth_fixture()
+ resp_dict = {"snapshot": {
+ "id": "2",
+ "creation_time": "2012-10-25T01:58:47Z"
+ }}
+
+ mock_stdin = mock.Mock()
+ mock_stdin.isatty = mock.Mock()
+ mock_stdin.isatty.return_value = True
+ mock_stdin.readline = mock.Mock()
+ mock_stdin.readline.return_value = 'n'
+ sys.stdin = mock_stdin
+
+ self.mock_request_delete('/stacks/teststack/1/snapshots/2', resp_dict)
+
+ self.m.ReplayAll()
+
+ resp = self.shell('snapshot-delete teststack/1 2')
+ resp_text = ('Are you sure you want to delete the snapshot of '
+ 'this stack [Y/N]?')
+ self.assertEqual(resp_text, resp)
+ self.m.ReplayAll()
+
+ mock_stdin.readline.return_value = 'Y'
+ resp = self.shell('snapshot-delete teststack/1 2')
+ msg = _("Request to delete the snapshot 2 of the stack "
+ "teststack/1 has been accepted.")
+ self.assertRegex(resp, msg)
+
+ # the main thing this @mock.patch is doing here is keeping
+ # sys.stdin untouched for later tests
+ @mock.patch('sys.stdin', new_callable=six.StringIO)
+ def test_snapshot_delete_prompt_with_tty_y(self, ms):
+ self.register_keystone_auth_fixture()
+ resp_dict = {"snapshot": {
+ "id": "2",
+ "creation_time": "2012-10-25T01:58:47Z"
+ }}
+
+ mock_stdin = mock.Mock()
+ mock_stdin.isatty = mock.Mock()
+ mock_stdin.isatty.return_value = True
+ mock_stdin.readline = mock.Mock()
+ mock_stdin.readline.return_value = ''
+ sys.stdin = mock_stdin
+
+ self.mock_request_delete('/stacks/teststack/1/snapshots/2', resp_dict)
+
+ self.m.ReplayAll()
+ # -y from the shell should skip the n/y prompt
+ resp = self.shell('snapshot-delete -y teststack/1 2')
+ msg = _("Request to delete the snapshot 2 of the stack "
+ "teststack/1 has been accepted.")
+ self.assertRegex(resp, msg)
+
def test_snapshot_delete(self):
self.register_keystone_auth_fixture()
@@ -2236,7 +2296,9 @@ class ShellTestUserPass(ShellBase):
self.m.ReplayAll()
resp = self.shell('snapshot-delete teststack/1 2')
- self.assertEqual("", resp)
+ msg = _("Request to delete the snapshot 2 of the stack "
+ "teststack/1 has been accepted.")
+ self.assertRegex(resp, msg)
def test_stack_restore(self):
self.register_keystone_auth_fixture()