tests.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from django.test import TestCase
  2. from coin.offers.models import Offer, OfferSubscription
  3. from coin.vpn.models import VPNSubscription
  4. from coin.resources.models import IPPool, IPSubnet
  5. from coin.members.models import Member
  6. from coin.members.tests import MemberTestsUtils
  7. class VPNTestCase(TestCase):
  8. fixtures = ['example_pools.json', 'offers.json']
  9. def setUp(self):
  10. self.v6_pool = IPPool.objects.get(default_subnetsize=56)
  11. self.v4_pool = IPPool.objects.get(default_subnetsize=32)
  12. self.offer = Offer.objects.filter(backend="openvpn_ldap")[0]
  13. # Create a member.
  14. cn = MemberTestsUtils.get_random_ldap_cn()
  15. self.member = Member.objects.create(first_name=u"Toto",
  16. last_name=u"L'artichaut",
  17. ldap_cn=cn)
  18. # Create a new VPN with subnets.
  19. # We need Django to call clean() so that magic happens.
  20. abo = OfferSubscription(offer=self.offer, member=self.member)
  21. abo.full_clean()
  22. abo.save()
  23. v6 = IPSubnet(ip_pool=self.v6_pool, offer_subscription=abo)
  24. v6.full_clean()
  25. v6.save()
  26. v4 = IPSubnet(ip_pool=self.v4_pool, offer_subscription=abo)
  27. v4.full_clean()
  28. v4.save()
  29. vpn = VPNSubscription(administrative_subscription=abo,
  30. login=cn + "_vpn",
  31. password="tata")
  32. vpn.full_clean()
  33. vpn.save()
  34. def tearDown(self):
  35. """Properly clean up objects, so that they don't stay in LDAP"""
  36. VPNSubscription.objects.get().delete()
  37. Member.objects.get().delete()
  38. def test_has_ipv4_endpoint(self):
  39. vpn = VPNSubscription.objects.get()
  40. self.assertIsNotNone(vpn.ipv4_endpoint)
  41. def test_has_correct_ipv4_endpoint(self):
  42. """If there is not endpoint, we consider it to be correct."""
  43. vpn = VPNSubscription.objects.get()
  44. if vpn.ipv4_endpoint is not None:
  45. abo = OfferSubscription.objects.get()
  46. subnet = abo.ip_subnet.get(ip_pool=self.v4_pool)
  47. self.assertIn(vpn.ipv4_endpoint, subnet.inet)
  48. def test_has_ipv6_endpoint(self):
  49. vpn = VPNSubscription.objects.get()
  50. self.assertIsNotNone(vpn.ipv6_endpoint)
  51. def test_has_correct_ipv6_endpoint(self):
  52. """If there is not endpoint, we consider it to be correct."""
  53. vpn = VPNSubscription.objects.get()
  54. if vpn.ipv6_endpoint is not None:
  55. abo = OfferSubscription.objects.get()
  56. subnet = abo.ip_subnet.get(ip_pool=self.v6_pool)
  57. self.assertIn(vpn.ipv6_endpoint, subnet.inet)