Coverage for frappe_manager / ssl_manager / certificate_exceptions.py: 43%

30 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-07-02 18:35 +0530

1from datetime import datetime 

2 

3from frappe_manager import CLI_FM_CONFIG_PATH 

4from frappe_manager.utils.helpers import format_ssl_certificate_time_remaining 

5 

6 

7class SSLCertificateNotFoundError(Exception): 

8 """Exception raised when a certificate is not found.""" 

9 

10 def __init__(self, domain, message="No ssl certificate is issued for {}."): 

11 self.domain = domain 

12 self.message = message.format(self.domain) 

13 super().__init__(self.message) 

14 

15 

16class SSLDNSChallengeCredentailsNotFound(Exception): 

17 """Exception raised for dns method required credential not found.""" 

18 

19 def __init__(self, message: str = f"Cloudflare dns credentials not found in {CLI_FM_CONFIG_PATH}"): 

20 self.message = message 

21 super().__init__(message) 

22 

23 

24class SSLCertificateChallengeFailed(Exception): 

25 """Exception raised when a certificate generation failed.""" 

26 

27 def __init__( 

28 self, 

29 challenge: str, 

30 ): 

31 self.challenge = challenge 

32 msg = f"{self.challenge} challenge failed." 

33 super().__init__(msg) 

34 

35 

36class SSLCertificateGenerateFailed(Exception): 

37 """Exception raised when a certificate generation failed.""" 

38 

39 def __init__( 

40 self, 

41 domain: str | None = None, 

42 ): 

43 if domain: 

44 self.message = f"Certificate generation failed for {domain}." 

45 else: 

46 self.message = "Certificate generation failed." 

47 super().__init__(self.message) 

48 

49 

50class SSLCertificateNotDueForRenewalError(Exception): 

51 """Exception raised when attempting to renew a certificate that is not due for renewal.""" 

52 

53 def __init__( 

54 self, 

55 domain, 

56 expiry_date: datetime, 

57 message="[blue]{}:[/blue] Certificate is not due for renewal will expire in {}.", 

58 ): 

59 self.domain = domain 

60 self.expiry_date = expiry_date 

61 self.time_remaining_txt = format_ssl_certificate_time_remaining(self.expiry_date) 

62 self.message = message.format(self.domain, self.time_remaining_txt) 

63 super().__init__(self.message)