예제 #1
0
    def test_get_secrets_secret_file_warning(self):
        service = 'foo'
        secret_source = 'bar'
        not_a_path = 'NOT_A_PATH'

        def mock_get(key):
            return {'external': False, 'file': not_a_path}[key]

        secret_def = mock.MagicMock()
        secret_def.get = mock.MagicMock(side_effect=mock_get)

        secret_defs = mock.Mock()
        secret_defs.get.return_value = secret_def

        secret = mock.Mock(uid=False,
                           gid=False,
                           mode=False,
                           source=secret_source)

        with mock.patch('compose.project.log') as mock_log:
            get_secrets(service, [secret], secret_defs)

        mock_log.warning.assert_called_with(
            "Service \"{service}\" uses an undefined secret file "
            "\"{secret_file}\", the following file should be created "
            "\"{secret_file}\"".format(service=service,
                                       secret_file=not_a_path))
예제 #2
0
    def test_get_secrets_uid_gid_mode_warning(self):
        service = 'foo'
        secret_source = 'bar'

        fd, filename_path = tempfile.mkstemp()
        os.close(fd)
        self.addCleanup(os.remove, filename_path)

        def mock_get(key):
            return {'external': False, 'file': filename_path}[key]

        secret_def = mock.MagicMock()
        secret_def.get = mock.MagicMock(side_effect=mock_get)

        secret_defs = mock.Mock()
        secret_defs.get.return_value = secret_def

        secret = mock.Mock(uid=True, gid=True, mode=True, source=secret_source)

        with mock.patch('compose.project.log') as mock_log:
            get_secrets(service, [secret], secret_defs)

        mock_log.warning.assert_called_with(
            "Service \"{service}\" uses secret \"{secret}\" with uid, "
            "gid, or mode. These fields are not supported by this "
            "implementation of the Compose file".format(service=service,
                                                        secret=secret_source))
예제 #3
0
    def test_get_secrets_no_secret_def(self):
        service = 'foo'
        secret_source = 'bar'

        secret_defs = mock.Mock()
        secret_defs.get.return_value = None
        secret = mock.Mock(source=secret_source)

        with self.assertRaises(ConfigurationError):
            get_secrets(service, [secret], secret_defs)
예제 #4
0
    def test_get_secrets_external_warning(self):
        service = 'foo'
        secret_source = 'bar'

        secret_def = mock.Mock()
        secret_def.get.return_value = True

        secret_defs = mock.Mock()
        secret_defs.get.side_effect = secret_def
        secret = mock.Mock(source=secret_source)

        with mock.patch('compose.project.log') as mock_log:
            get_secrets(service, [secret], secret_defs)

        mock_log.warning.assert_called_with("Service \"{service}\" uses secret \"{secret}\" "
                                            "which is external. External secrets are not available"
                                            " to containers created by docker-compose."
                                            .format(service=service, secret=secret_source))