From 9752e5b2611b024b0f6b4e45b8243e23af9d02ad Mon Sep 17 00:00:00 2001 From: Derek Higgins Date: Mon, 20 Jan 2014 12:13:58 +0000 Subject: [PATCH] Add new username type Parsing usernames would be a fairly common thing todo from heat metadata, this type allows what would be expected to cover most sane usernames. Change-Id: I3a5577d2c5bef1ce54629a0b99e2dc085d274f02 --- os_apply_config/tests/test_value_type.py | 13 +++++++++++++ os_apply_config/value_types.py | 1 + 2 files changed, 14 insertions(+) diff --git a/os_apply_config/tests/test_value_type.py b/os_apply_config/tests/test_value_type.py index acf9b70..6e51eb4 100644 --- a/os_apply_config/tests/test_value_type.py +++ b/os_apply_config/tests/test_value_type.py @@ -143,3 +143,16 @@ class ValueTypeTestCase(testtools.TestCase): value_types.ensure_type, test_swiftdevices, 'swiftdevices') + + def test_username(self): + for test_username in ['guest', 'guest_13-42']: + self.assertEqual(test_username, value_types.ensure_type( + test_username, + 'username')) + + def test_username_bad(self): + for test_username in ['guest`ls`', 'guest$PASSWD', 'guest 2']: + self.assertRaises(config_exception.ConfigException, + value_types.ensure_type, + test_username, + 'username') diff --git a/os_apply_config/value_types.py b/os_apply_config/value_types.py index 7efd921..24fdef6 100644 --- a/os_apply_config/value_types.py +++ b/os_apply_config/value_types.py @@ -28,6 +28,7 @@ TYPES = { "(?#/dbname)(/[a-zA-Z0-9_-]+)?" "(?#?variable=value)(\?[a-zA-Z0-9=_-]+)?$", "swiftdevices": "^(r\d+z\d+-[A-Za-z0-9.-_]+:%PORT%/[^,]+,?)+$", + "username": "^[A-Za-z0-9_-]+$", "raw": "" }