def test_create_jks_keypass_fail_export_pkcs12(self):
        set_module_args(
            dict(certificate='cert-foo',
                 private_key='private-foo',
                 private_key_passphrase='passphrase-foo',
                 dest='/path/to/keystore.jks',
                 name='foo',
                 password='******'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode)

        module.fail_json = Mock()

        with patch('os.remove', return_value=True):
            self.run_commands.side_effect = [(1, '', ''), (0, '', '')]
            create_jks(module, "test", "openssl", "keytool",
                       "/path/to/keystore.jks", "changeit", "passphrase-foo")
            module.fail_json.assert_called_once_with(cmd=[
                "openssl", "pkcs12", "-export", "-name", "test", "-in",
                "/tmp/foo.crt", "-inkey", "/tmp/foo.key", "-out",
                "/tmp/keystore.p12", "-passout", "stdin", "-passin", "stdin"
            ],
                                                     msg='',
                                                     rc=1)
    def test_create_jks_success(self):
        set_module_args(
            dict(certificate='cert-foo',
                 private_key='private-foo',
                 dest='/path/to/keystore.jks',
                 name='foo',
                 password='******'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode)

        module.exit_json = Mock()

        with patch('os.remove', return_value=True):
            self.create_path.side_effect = ['/tmp/tmpgrzm2ah7']
            self.create_file.side_effect = [
                '/tmp/etacifitrec', '/tmp/yek_etavirp'
            ]
            self.run_commands.side_effect = [(0, '', ''), (0, '', '')]
            create_jks(module, "test", "openssl", "keytool",
                       "/path/to/keystore.jks", "changeit", "")
            module.exit_json.assert_called_once_with(
                changed=True,
                cmd=[
                    "keytool", "-importkeystore", "-destkeystore",
                    "/path/to/keystore.jks", "-srckeystore",
                    "/tmp/tmpgrzm2ah7", "-srcstoretype", "pkcs12", "-alias",
                    "test", "-deststorepass:env", "STOREPASS",
                    "-srcstorepass:env", "STOREPASS", "-noprompt"
                ],
                msg='',
                rc=0)
    def test_create_jks_success(self):
        set_module_args(
            dict(certificate='cert-foo',
                 private_key='private-foo',
                 dest='/path/to/keystore.jks',
                 name='foo',
                 password='******'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode)

        module.exit_json = Mock()

        with patch('os.remove', return_value=True):
            self.run_commands.side_effect = lambda module, cmd, data: (0, '',
                                                                       '')
            create_jks(module, "test", "openssl", "keytool",
                       "/path/to/keystore.jks", "changeit", "")
            module.exit_json.assert_called_once_with(
                changed=True,
                cmd=[
                    "keytool", "-importkeystore", "-destkeystore",
                    "/path/to/keystore.jks", "-srckeystore",
                    "/tmp/keystore.p12", "-srcstoretype", "pkcs12", "-alias",
                    "test", "-deststorepass", "changeit", "-srcstorepass",
                    "changeit", "-noprompt"
                ],
                msg='',
                rc=0,
                stdout_lines='')
    def test_create_jks_fail_import_key(self):
        set_module_args(
            dict(certificate='cert-foo',
                 private_key='private-foo',
                 dest='/path/to/keystore.jks',
                 name='foo',
                 password='******'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode)

        module.fail_json = Mock()

        with patch('os.remove', return_value=True):
            self.run_commands.side_effect = [(0, '', ''), (1, '', '')]
            create_jks(module, "test", "openssl", "keytool",
                       "/path/to/keystore.jks", "changeit")
            module.fail_json.assert_called_once_with(
                cmd="keytool -importkeystore "
                "-destkeystore '/path/to/keystore.jks' "
                "-srckeystore '/tmp/keystore.p12' -srcstoretype pkcs12 -alias 'test' "
                "-deststorepass 'changeit' -srcstorepass 'changeit' -noprompt",
                msg='',
                rc=1)