예제 #1
0
 def test_get_non_existing_key_v2(self, mock_hvac):
     mock_client = mock.MagicMock()
     mock_hvac.Client.return_value = mock_client
     # Response does not contain the requested key
     mock_client.secrets.kv.v2.read_secret_version.side_effect = InvalidPath(
     )
     vault_client = _VaultClient(auth_type="token",
                                 token="s.7AU0I51yv1Q1lxOIg1F3ZRAS",
                                 url="http://localhost:8180")
     secret = vault_client.get_secret(secret_path="missing")
     self.assertIsNone(secret)
     mock_client.secrets.kv.v2.read_secret_version.assert_called_once_with(
         mount_point='secret', path='missing', version=None)
예제 #2
0
 def test_get_non_existing_key_v1(self, mock_hvac):
     mock_client = mock.MagicMock()
     mock_hvac.Client.return_value = mock_client
     # Response does not contain the requested key
     mock_client.secrets.kv.v1.read_secret.side_effect = InvalidPath()
     vault_client = _VaultClient(auth_type="approle",
                                 role_id="role",
                                 url="http://localhost:8180",
                                 secret_id="pass",
                                 kv_engine_version=1)
     secret = vault_client.get_secret(secret_path="missing")
     self.assertIsNone(secret)
     mock_client.secrets.kv.v1.read_secret.assert_called_once_with(
         mount_point='secret', path='missing')
예제 #3
0
 def test_get_non_existing_key_v2_different_auth(self, mock_hvac):
     mock_client = mock.MagicMock()
     mock_hvac.Client.return_value = mock_client
     # Response does not contain the requested key
     mock_client.secrets.kv.v2.read_secret_version.side_effect = InvalidPath(
     )
     vault_client = _VaultClient(
         auth_type="radius",
         radius_host="radhost",
         radius_port=8110,
         radius_secret="pass",
         url="http://localhost:8180",
     )
     secret = vault_client.get_secret(secret_path="missing")
     self.assertIsNone(secret)
     self.assertEqual("secret", vault_client.mount_point)
     mock_client.secrets.kv.v2.read_secret_version.assert_called_once_with(
         mount_point='secret', path='missing', version=None)
예제 #4
0
    def test_get_conn_uri_non_existent_key(self, mock_hvac):
        """
        Test that if the key with connection ID is not present in Vault, VaultClient.get_connections
        should return None
        """
        mock_client = mock.MagicMock()
        mock_hvac.Client.return_value = mock_client
        # Response does not contain the requested key
        mock_client.secrets.kv.v2.read_secret_version.side_effect = InvalidPath()

        kwargs = {
            "connections_path": "connections",
            "mount_point": "airflow",
            "auth_type": "token",
            "url": "http://127.0.0.1:8200",
            "token": "s.7AU0I51yv1Q1lxOIg1F3ZRAS"
        }

        test_client = VaultBackend(**kwargs)
        self.assertIsNone(test_client.get_conn_uri(conn_id="test_mysql"))
        mock_client.secrets.kv.v2.read_secret_version.assert_called_once_with(
            mount_point='airflow', path='connections/test_mysql')
        self.assertEqual([], test_client.get_connections(conn_id="test_mysql"))
예제 #5
0
    def test_get_variable_value_non_existent_key(self, mock_hvac):
        """
        Test that if the key with connection ID is not present in Vault, _VaultClient.get_connections
        should return None
        """
        mock_client = mock.MagicMock()
        mock_hvac.Client.return_value = mock_client
        # Response does not contain the requested key
        mock_client.secrets.kv.v2.read_secret_version.side_effect = InvalidPath(
        )

        kwargs = {
            "variables_path": "variables",
            "mount_point": "airflow",
            "auth_type": "token",
            "url": "http://127.0.0.1:8200",
            "token": "s.7AU0I51yv1Q1lxOIg1F3ZRAS",
        }

        test_client = VaultBackend(**kwargs)
        assert test_client.get_variable("hello") is None
        mock_client.secrets.kv.v2.read_secret_version.assert_called_once_with(
            mount_point='airflow', path='variables/hello', version=None)
        assert test_client.get_variable("hello") is None