Coverage for vpn/api/serializers_/crypto.py: 100%

44 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1from netbox.api.fields import ChoiceField, SerializedPKRelatedField 

2from netbox.api.serializers import PrimaryModelSerializer 

3from vpn.choices import * 

4from vpn.models import IKEPolicy, IKEProposal, IPSecPolicy, IPSecProfile, IPSecProposal 

5 

6__all__ = ( 

7 'IKEPolicySerializer', 

8 'IKEProposalSerializer', 

9 'IPSecPolicySerializer', 

10 'IPSecProfileSerializer', 

11 'IPSecProposalSerializer', 

12) 

13 

14 

15class IKEProposalSerializer(PrimaryModelSerializer): 

16 authentication_method = ChoiceField( 

17 choices=AuthenticationMethodChoices 

18 ) 

19 encryption_algorithm = ChoiceField( 

20 choices=EncryptionAlgorithmChoices 

21 ) 

22 authentication_algorithm = ChoiceField( 

23 choices=AuthenticationAlgorithmChoices, 

24 required=False 

25 ) 

26 group = ChoiceField( 

27 choices=DHGroupChoices 

28 ) 

29 

30 class Meta: 

31 model = IKEProposal 

32 fields = ( 

33 'id', 'url', 'display_url', 'display', 'name', 'description', 'authentication_method', 

34 'encryption_algorithm', 'authentication_algorithm', 'group', 'sa_lifetime', 'owner', 'comments', 'tags', 

35 'custom_fields', 'created', 'last_updated', 

36 ) 

37 brief_fields = ('id', 'url', 'display', 'name', 'description') 

38 

39 

40class IKEPolicySerializer(PrimaryModelSerializer): 

41 version = ChoiceField( 

42 choices=IKEVersionChoices 

43 ) 

44 mode = ChoiceField( 

45 choices=IKEModeChoices, 

46 required=False 

47 ) 

48 proposals = SerializedPKRelatedField( 

49 queryset=IKEProposal.objects.all(), 

50 serializer=IKEProposalSerializer, 

51 nested=True, 

52 required=False, 

53 many=True 

54 ) 

55 

56 class Meta: 

57 model = IKEPolicy 

58 fields = ( 

59 'id', 'url', 'display_url', 'display', 'name', 'description', 'version', 'mode', 'proposals', 

60 'preshared_key', 'owner', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 

61 ) 

62 brief_fields = ('id', 'url', 'display', 'name', 'description') 

63 

64 

65class IPSecProposalSerializer(PrimaryModelSerializer): 

66 encryption_algorithm = ChoiceField( 

67 choices=EncryptionAlgorithmChoices, 

68 required=False 

69 ) 

70 authentication_algorithm = ChoiceField( 

71 choices=AuthenticationAlgorithmChoices, 

72 required=False 

73 ) 

74 

75 class Meta: 

76 model = IPSecProposal 

77 fields = ( 

78 'id', 'url', 'display_url', 'display', 'name', 'description', 'encryption_algorithm', 

79 'authentication_algorithm', 'sa_lifetime_seconds', 'sa_lifetime_data', 'owner', 'comments', 'tags', 

80 'custom_fields', 'created', 'last_updated', 

81 ) 

82 brief_fields = ('id', 'url', 'display', 'name', 'description') 

83 

84 

85class IPSecPolicySerializer(PrimaryModelSerializer): 

86 proposals = SerializedPKRelatedField( 

87 queryset=IPSecProposal.objects.all(), 

88 serializer=IPSecProposalSerializer, 

89 nested=True, 

90 required=False, 

91 many=True 

92 ) 

93 pfs_group = ChoiceField( 

94 choices=DHGroupChoices, 

95 required=False 

96 ) 

97 

98 class Meta: 

99 model = IPSecPolicy 

100 fields = ( 

101 'id', 'url', 'display_url', 'display', 'name', 'description', 'proposals', 'pfs_group', 'owner', 'comments', 

102 'tags', 'custom_fields', 'created', 'last_updated', 

103 ) 

104 brief_fields = ('id', 'url', 'display', 'name', 'description') 

105 

106 

107class IPSecProfileSerializer(PrimaryModelSerializer): 

108 mode = ChoiceField( 

109 choices=IPSecModeChoices 

110 ) 

111 ike_policy = IKEPolicySerializer( 

112 nested=True 

113 ) 

114 ipsec_policy = IPSecPolicySerializer( 

115 nested=True 

116 ) 

117 

118 class Meta: 

119 model = IPSecProfile 

120 fields = ( 

121 'id', 'url', 'display_url', 'display', 'name', 'description', 'mode', 'ike_policy', 'ipsec_policy', 'owner', 

122 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 

123 ) 

124 brief_fields = ('id', 'url', 'display', 'name', 'description')