Skip to content

Commit 7404c1a

Browse files
authored
[fix] Fixed deletion of VPN Client certificate #611
- Deletion of VPN Client certificate raises 'ObjectDoesNotExist' exception. - Wrapped post_delete signal in a try-except block. Closes #611
1 parent 062800f commit 7404c1a

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

openwisp_controller/config/base/vpn.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -656,9 +656,11 @@ class method for ``post_delete`` signal
656656
# only invalidates, does not regenerate the cache
657657
# to avoid generating high load during bulk deletes
658658
instance.vpn._invalidate_peer_cache()
659-
660-
if instance.cert:
661-
instance.cert.delete()
659+
try:
660+
if instance.cert:
661+
instance.cert.delete()
662+
except ObjectDoesNotExist:
663+
pass
662664
try:
663665
if instance.ip:
664666
instance.ip.delete()

openwisp_controller/config/tests/test_vpn.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,19 @@ def test_vpn_client_auto_cert_deletes_cert(self):
138138
self.assertEqual(VpnClient.objects.filter(pk=vpnclient.pk).count(), 0)
139139
self.assertEqual(Cert.objects.filter(pk=cert_pk).count(), 0)
140140

141+
def test_vpn_client_cert_post_deletes_cert(self):
142+
org = self._get_org()
143+
vpn = self._create_vpn()
144+
t = self._create_template(name='vpn-test', type='vpn', vpn=vpn, auto_cert=True)
145+
c = self._create_config(organization=org)
146+
c.templates.add(t)
147+
vpnclient = c.vpnclient_set.first()
148+
cert_pk = vpnclient.cert.pk
149+
self.assertEqual(Cert.objects.filter(pk=cert_pk).count(), 1)
150+
vpnclient.cert.delete()
151+
self.assertEqual(VpnClient.objects.filter(pk=vpnclient.pk).count(), 0)
152+
self.assertEqual(Cert.objects.filter(pk=cert_pk).count(), 0)
153+
141154
def test_vpn_cert_and_ca_mismatch(self):
142155
ca = self._create_ca()
143156
different_ca = self._create_ca(common_name='different-ca')

0 commit comments

Comments
 (0)