From 7895718ce9df64eeb0c97ebe3da2c9a2a554036c Mon Sep 17 00:00:00 2001
From: Tim Burke <tim.burke@gmail.com>
Date: Wed, 8 Aug 2018 17:06:17 +0000
Subject: [PATCH] Fix keymmaster_conf_section typo

Change-Id: I3bce1c4efeb3a3a7319020de76ba7f06015a5a36
---
 .../common/middleware/crypto/kms_keymaster.py |  2 +-
 .../middleware/crypto/test_kms_keymaster.py   | 38 ++++++++++++-------
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/swift/common/middleware/crypto/kms_keymaster.py b/swift/common/middleware/crypto/kms_keymaster.py
index 495a1ee4d8..4e936122f2 100644
--- a/swift/common/middleware/crypto/kms_keymaster.py
+++ b/swift/common/middleware/crypto/kms_keymaster.py
@@ -34,7 +34,7 @@ class KmsKeyMaster(KeyMaster):
                       'domain_id', 'domain_name', 'project_id',
                       'project_domain_id', 'reauthenticate',
                       'auth_endpoint', 'api_class', 'key_id')
-    keymmaster_conf_section = 'kms_keymaster'
+    keymaster_conf_section = 'kms_keymaster'
 
     def _get_root_secret(self, conf):
         """
diff --git a/test/unit/common/middleware/crypto/test_kms_keymaster.py b/test/unit/common/middleware/crypto/test_kms_keymaster.py
index 2ebdcbf1b7..ca3fb6edce 100644
--- a/test/unit/common/middleware/crypto/test_kms_keymaster.py
+++ b/test/unit/common/middleware/crypto/test_kms_keymaster.py
@@ -215,30 +215,42 @@ class TestKmsKeymaster(unittest.TestCase):
         start_response, _ = capture_start_response()
         self.assertRaises(Exception, app, req.environ, start_response)
 
-    @mock.patch('swift.common.middleware.crypto.keymaster.readconf')
     @mock.patch.object(kms_keymaster.KmsKeyMaster, '_get_root_secret')
     def test_get_root_secret(
-            self, mock_get_root_secret_from_kms, mock_readconf):
+            self, mock_get_root_secret_from_kms):
         # Successful call with coarse _get_root_secret_from_kms() mock.
         mock_get_root_secret_from_kms.return_value = (
             base64.b64encode(b'x' * 32))
-        '''
-        Return valid Barbican configuration parameters.
-        '''
-        mock_readconf.return_value = TEST_KMS_KEYMASTER_CONF
-        '''
-        Verify that keys are derived correctly by the keymaster.
-        '''
+        # Provide valid Barbican configuration parameters in proxy-server
+        # config.
         self.app = kms_keymaster.KmsKeyMaster(self.swift,
                                               TEST_KMS_KEYMASTER_CONF)
-        '''
-        Verify that _get_root_secret_from_kms() was called with the
-        correct parameters.
-        '''
+        # Verify that _get_root_secret_from_kms() was called with the
+        # correct parameters.
         mock_get_root_secret_from_kms.assert_called_with(
             TEST_KMS_KEYMASTER_CONF
         )
 
+    @mock.patch('swift.common.middleware.crypto.keymaster.readconf')
+    @mock.patch.object(kms_keymaster.KmsKeyMaster, '_get_root_secret')
+    def test_get_root_secret_from_external_file(
+            self, mock_get_root_secret_from_kms, mock_readconf):
+        # Return valid Barbican configuration parameters.
+        mock_readconf.return_value = TEST_KMS_KEYMASTER_CONF
+        # Successful call with coarse _get_root_secret_from_kms() mock.
+        mock_get_root_secret_from_kms.return_value = (
+            base64.b64encode(b'x' * 32))
+        # Point to external config in proxy-server config.
+        self.app = kms_keymaster.KmsKeyMaster(
+            self.swift, TEST_PROXYSERVER_CONF_EXTERNAL_KEYMASTER_CONF)
+        # Verify that _get_root_secret_from_kms() was called with the
+        # correct parameters.
+        mock_get_root_secret_from_kms.assert_called_with(
+            TEST_KMS_KEYMASTER_CONF
+        )
+        self.assertEqual(mock_readconf.mock_calls, [
+            mock.call('PATH_TO_KEYMASTER_CONFIG_FILE', 'kms_keymaster')])
+
     @mock.patch('swift.common.middleware.crypto.kms_keymaster.'
                 'keystone_password.KeystonePassword')
     @mock.patch('swift.common.middleware.crypto.kms_keymaster.cfg')