1"""Test acme_account_deactivate script with real ACME server""" 

2import unittest 

3import os 

4import configparser 

5import acme_dns_tiny 

6from tests.config_factory import generate_acme_account_deactivate_config 

7import tools.acme_account_deactivate 

8 

9ACME_DIRECTORY = os.getenv("GITLABCI_ACMEDIRECTORY_V2", 

10 "https://acme-staging-v02.api.letsencrypt.org/directory") 

11 

12 

13class TestACMEAccountDeactivate(unittest.TestCase): 

14 """Tests for acme_account_deactivate.""" 

15 

16 @classmethod 

17 def setUpClass(cls): 

18 cls.configs = generate_acme_account_deactivate_config() 

19 try: 

20 acme_dns_tiny.main([cls.configs['config']]) 

21 except ValueError as err: 

22 if str(err).startswith("Error register"): 

23 raise ValueError("Fail test as account has not been registered correctly: {0}" 

24 .format(err)) from err 

25 

26 super(TestACMEAccountDeactivate, cls).setUpClass() 

27 

28 # To clean ACME staging server and close correctly temporary files 

29 # pylint: disable=bare-except 

30 @classmethod 

31 def tearDownClass(cls): 

32 # Remove temporary files 

33 parser = configparser.ConfigParser() 

34 parser.read(cls.configs['config']) 

35 try: 

36 os.remove(parser["acmednstiny"]["AccountKeyFile"]) 

37 except: 

38 pass 

39 try: 

40 os.remove(parser["acmednstiny"]["CSRFile"]) 

41 except: 

42 pass 

43 try: 

44 os.remove(cls.configs['config']) 

45 except: 

46 pass 

47 super(TestACMEAccountDeactivate, cls).tearDownClass() 

48 

49 def test_success_account_deactivate(self): 

50 """ Test success account key deactivate """ 

51 with self.assertLogs(level='INFO') as accountdeactivatelog: 

52 tools.acme_account_deactivate.main(["--account-key", self.configs['key'], 

53 "--acme-directory", ACME_DIRECTORY]) 

54 self.assertIn("INFO:acme_account_deactivate:The account has been deactivated.", 

55 accountdeactivatelog.output) 

56 

57 

58if __name__ == "__main__": # pragma: no cover 

59 unittest.main()