From 93b82ea503f26245ceca67342dc1e47ad9e9cf26 Mon Sep 17 00:00:00 2001 From: David Stanek Date: Wed, 23 Sep 2015 11:02:48 +0000 Subject: [PATCH] Adds interface tests for timeutils We were originally testing the return value of timeutils.parse_strtime in our unit tests. Instead of interleaving tests for an external library into Keystone tests I gave them a place of their own. Change-Id: I2601b1198ca841c71a7590c7b00b11bcede4d4a9 --- keystone/tests/unit/external/README.rst | 9 +++++ keystone/tests/unit/external/__init__.py | 0 .../tests/unit/external/test_timeutils.py | 33 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 keystone/tests/unit/external/README.rst create mode 100644 keystone/tests/unit/external/__init__.py create mode 100644 keystone/tests/unit/external/test_timeutils.py diff --git a/keystone/tests/unit/external/README.rst b/keystone/tests/unit/external/README.rst new file mode 100644 index 0000000000..e8f9fa6522 --- /dev/null +++ b/keystone/tests/unit/external/README.rst @@ -0,0 +1,9 @@ +This directory contains interface tests for external libraries. The goal +is not to test every possible path through a library's code and get 100% +coverage. It's to give us a level of confidence that their general interface +remains the same through version upgrades. + +This gives us a place to put these tests without having to litter our +own tests with assertions that are not directly related to the code +under test. The expectations for the external library are all in one +place so it makes it easier for us to find out what they are. diff --git a/keystone/tests/unit/external/__init__.py b/keystone/tests/unit/external/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keystone/tests/unit/external/test_timeutils.py b/keystone/tests/unit/external/test_timeutils.py new file mode 100644 index 0000000000..7fc72d581c --- /dev/null +++ b/keystone/tests/unit/external/test_timeutils.py @@ -0,0 +1,33 @@ +# 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 datetime + +from oslo_utils import timeutils + +import keystone.tests.unit as tests + + +class TestTimeUtils(tests.BaseTestCase): + + def test_parsing_date_strings_returns_a_datetime(self): + example_date_str = '2015-09-23T04:45:37.196621Z' + dt = timeutils.parse_strtime(example_date_str, fmt=tests.TIME_FORMAT) + self.assertIsInstance(dt, datetime.datetime) + + def test_parsing_invalid_date_strings_raises_a_ValueError(self): + example_date_str = '' + simple_format = '%Y' + self.assertRaises(ValueError, + timeutils.parse_strtime, + example_date_str, + fmt=simple_format)