2018-09-07 14:35:53 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import absolute_import, unicode_literals
|
|
|
|
import os
|
|
|
|
import logging
|
2018-11-29 20:48:07 +00:00
|
|
|
|
|
|
|
import salt.utils.files
|
|
|
|
from salt.ext import six
|
|
|
|
|
|
|
|
from tests.support.helpers import with_tempfile
|
2018-09-07 14:35:53 +00:00
|
|
|
from tests.support.paths import BASE_FILES
|
|
|
|
from tests.support.case import ModuleCase
|
|
|
|
from tests.support.unit import skipIf
|
|
|
|
from tests.support.mixins import SaltReturnAssertsMixin
|
|
|
|
|
|
|
|
try:
|
2018-09-07 15:03:29 +00:00
|
|
|
import M2Crypto # pylint: disable=W0611
|
2018-09-07 14:35:53 +00:00
|
|
|
HAS_M2CRYPTO = True
|
|
|
|
except ImportError:
|
|
|
|
HAS_M2CRYPTO = False
|
|
|
|
|
|
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
2018-11-29 20:48:07 +00:00
|
|
|
@skipIf(not HAS_M2CRYPTO, 'Skip when no M2Crypto found')
|
2018-09-07 14:35:53 +00:00
|
|
|
class x509Test(ModuleCase, SaltReturnAssertsMixin):
|
|
|
|
|
2018-11-29 20:48:07 +00:00
|
|
|
@classmethod
|
|
|
|
def setUpClass(cls):
|
|
|
|
cert_path = os.path.join(BASE_FILES, 'x509_test.crt')
|
|
|
|
with salt.utils.files.fopen(cert_path) as fp:
|
|
|
|
cls.x509_cert_text = fp.read()
|
|
|
|
|
|
|
|
def run_function(self, *args, **kwargs):
|
|
|
|
ret = super(x509Test, self).run_function(*args, **kwargs)
|
|
|
|
log.debug('ret = %s', ret)
|
|
|
|
return ret
|
|
|
|
|
|
|
|
@with_tempfile(suffix='.pem', create=False)
|
|
|
|
def test_issue_49027(self, pemfile):
|
|
|
|
ret = self.run_state(
|
|
|
|
'x509.pem_managed',
|
|
|
|
name=pemfile,
|
|
|
|
text=self.x509_cert_text)
|
|
|
|
assert isinstance(ret, dict), ret
|
|
|
|
ret = ret[next(iter(ret))]
|
|
|
|
assert ret.get('result') is True, ret
|
|
|
|
with salt.utils.files.fopen(pemfile) as fp:
|
|
|
|
result = fp.readlines()
|
|
|
|
self.assertEqual(self.x509_cert_text.splitlines(True), result)
|
|
|
|
|
|
|
|
@with_tempfile(suffix='.crt', create=False)
|
|
|
|
@with_tempfile(suffix='.key', create=False)
|
|
|
|
def test_issue_49008(self, keyfile, crtfile):
|
|
|
|
ret = self.run_function(
|
|
|
|
'state.apply',
|
|
|
|
['issue-49008'],
|
|
|
|
pillar={'keyfile': keyfile, 'crtfile': crtfile})
|
|
|
|
assert isinstance(ret, dict), ret
|
|
|
|
for state_result in six.itervalues(ret):
|
|
|
|
assert state_result['result'] is True, state_result
|
|
|
|
assert os.path.exists(keyfile)
|
|
|
|
assert os.path.exists(crtfile)
|