Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

"""Base test class for DNS authenticators.""" 

 

import os 

 

import configobj 

import josepy as jose 

import mock 

import six 

from acme import challenges 

 

from certbot import achallenges 

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) 

 

os.chmod(path, 0o600)