summaryrefslogtreecommitdiff
path: root/openstackclient/tests/common
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-02-22 06:00:18 +0000
committerGerrit Code Review <review@openstack.org>2014-02-22 06:00:18 +0000
commit034a9d158f27bb9bd1a7430c09d1826196215093 (patch)
treefc88f06a264bcc19847bedda75213846a4f65a75 /openstackclient/tests/common
parent8b494f08b2d60b487b37de6603349db66496b955 (diff)
parent033f27fe4dc4455c2f07978a273fd65faa653b67 (diff)
downloadpython-openstackclient-034a9d158f27bb9bd1a7430c09d1826196215093.tar.gz
Merge "Add ability to prompt for passwords for user create and set"
Diffstat (limited to 'openstackclient/tests/common')
-rw-r--r--openstackclient/tests/common/test_utils.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/openstackclient/tests/common/test_utils.py b/openstackclient/tests/common/test_utils.py
new file mode 100644
index 00000000..0ad4ca9b
--- /dev/null
+++ b/openstackclient/tests/common/test_utils.py
@@ -0,0 +1,59 @@
+# Copyright 2012-2013 OpenStack, LLC.
+#
+# 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.
+#
+
+import mock
+
+from openstackclient.common import exceptions
+from openstackclient.common import utils
+from openstackclient.tests import utils as test_utils
+
+PASSWORD = "Pa$$w0rd"
+WASSPORD = "Wa$$p0rd"
+DROWSSAP = "dr0w$$aP"
+
+
+class TestUtils(test_utils.TestCase):
+
+ def test_get_password_good(self):
+ with mock.patch("getpass.getpass", return_value=PASSWORD):
+ mock_stdin = mock.Mock()
+ mock_stdin.isatty = mock.Mock()
+ mock_stdin.isatty.return_value = True
+ self.assertEqual(utils.get_password(mock_stdin), PASSWORD)
+
+ def test_get_password_bad_once(self):
+ answers = [PASSWORD, WASSPORD, DROWSSAP, DROWSSAP]
+ with mock.patch("getpass.getpass", side_effect=answers):
+ mock_stdin = mock.Mock()
+ mock_stdin.isatty = mock.Mock()
+ mock_stdin.isatty.return_value = True
+ self.assertEqual(utils.get_password(mock_stdin), DROWSSAP)
+
+ def test_get_password_no_tty(self):
+ mock_stdin = mock.Mock()
+ mock_stdin.isatty = mock.Mock()
+ mock_stdin.isatty.return_value = False
+ self.assertRaises(exceptions.CommandError,
+ utils.get_password,
+ mock_stdin)
+
+ def test_get_password_cntrl_d(self):
+ with mock.patch("getpass.getpass", side_effect=EOFError()):
+ mock_stdin = mock.Mock()
+ mock_stdin.isatty = mock.Mock()
+ mock_stdin.isatty.return_value = True
+ self.assertRaises(exceptions.CommandError,
+ utils.get_password,
+ mock_stdin)