mirror of
https://github.com/certbot/certbot.git
synced 2026-06-05 14:54:24 -04:00
This PR implements the filesystem.chmod method from #6497. * Implement filesystem.chmod * Conditionally add pywin32 on setuptools versions that support environment markers. * Update apache plugin requirements * Use a try/except import approach similar to lock * Add comments about well-known SIDs * Add main command * Call filesystem.chmod in tests, remove one test * Add test for os module * Update environment marker * Ensure we are not building wheels using an old version of setuptools * Added a link to list of NTFS rights * Simplify sid comparison * Enable coverage * Sometimes, double-quote is the solution * Add entrypoint * Add unit tests to filesystem * Resolve recursively the link, add doc * Move imports to the top of the file * Remove string conversion of the ACL, fix setup * Ensure admins have all permissions * Simplify dacl comparison * Conditionally raise for windows temporary workaround * Add a test to check filesystem.chown is protected against symlink loops
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
"""Base test class for DNS authenticators."""
|
|
|
|
import configobj
|
|
import josepy as jose
|
|
import mock
|
|
import six
|
|
|
|
from acme import challenges
|
|
|
|
from certbot import achallenges
|
|
from certbot.compat import filesystem
|
|
from certbot.tests import acme_util
|
|
from certbot.tests import util as test_util
|
|
|
|
DOMAIN = 'example.com'
|
|
KEY = jose.JWKRSA.load(test_util.load_vector("rsa512_key.pem"))
|
|
|
|
|
|
class BaseAuthenticatorTest(object):
|
|
"""
|
|
A base test class to reduce duplication between test code for DNS Authenticator Plugins.
|
|
|
|
Assumes:
|
|
* That subclasses also subclass unittest.TestCase
|
|
* That the authenticator is stored as self.auth
|
|
"""
|
|
|
|
achall = achallenges.KeyAuthorizationAnnotatedChallenge(
|
|
challb=acme_util.DNS01, domain=DOMAIN, account_key=KEY)
|
|
|
|
def test_more_info(self):
|
|
# pylint: disable=no-member
|
|
self.assertTrue(isinstance(self.auth.more_info(), six.string_types))
|
|
|
|
def test_get_chall_pref(self):
|
|
# pylint: disable=no-member
|
|
self.assertEqual(self.auth.get_chall_pref(None), [challenges.DNS01])
|
|
|
|
def test_parser_arguments(self):
|
|
m = mock.MagicMock()
|
|
|
|
# pylint: disable=no-member
|
|
self.auth.add_parser_arguments(m)
|
|
|
|
m.assert_any_call('propagation-seconds', type=int, default=mock.ANY, help=mock.ANY)
|
|
|
|
|
|
def write(values, path):
|
|
"""Write the specified values to a config file.
|
|
|
|
:param dict values: A map of values to write.
|
|
:param str path: Where to write the values.
|
|
"""
|
|
|
|
config = configobj.ConfigObj()
|
|
|
|
for key in values:
|
|
config[key] = values[key]
|
|
|
|
with open(path, "wb") as f:
|
|
config.write(outfile=f)
|
|
|
|
filesystem.chmod(path, 0o600)
|