test_dns_service.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. from cloudbridge.base import helpers as cb_helpers
  2. from cloudbridge.interfaces.resources import DnsRecord
  3. from cloudbridge.interfaces.resources import DnsRecordType
  4. from cloudbridge.interfaces.resources import DnsZone
  5. from tests import helpers
  6. from tests.helpers import ProviderTestBase
  7. from tests.helpers import standard_interface_tests as sit
  8. class CloudDnsServiceTestCase(ProviderTestBase):
  9. _multiprocess_can_split_ = True
  10. @helpers.skipIfNoService(['dns.host_zones'])
  11. def test_crud_dns_zones(self):
  12. def create_dns_zone(name):
  13. if name:
  14. name = name + ".com."
  15. return self.provider.dns.host_zones.create(
  16. name, "admin@cloudve.org")
  17. def cleanup_dns_zone(dns_zone):
  18. if dns_zone:
  19. dns_zone.delete()
  20. def test_zone_props(dns_zone):
  21. self.assertEqual(dns_zone.admin_email, "admin@cloudve.org")
  22. sit.check_crud(self, self.provider.dns.host_zones, DnsZone,
  23. "cb-crudzone", create_dns_zone, cleanup_dns_zone,
  24. skip_name_check=True, extra_test_func=test_zone_props)
  25. @helpers.skipIfNoService(['dns.host_zones'])
  26. def test_create_dns_zones_not_fully_qualified(self):
  27. zone_name = "cb-dnszonenfq-{0}.com".format(helpers.get_uuid())
  28. test_zone = None
  29. with cb_helpers.cleanup_action(lambda: test_zone.delete()):
  30. # If zone name is not fully qualified, it should automatically be
  31. # handled
  32. test_zone = self.provider.dns.host_zones.create(
  33. zone_name, "admin@cloudve.org")
  34. @helpers.skipIfNoService(['dns.host_zones'])
  35. def test_crud_dns_record(self):
  36. test_zone = None
  37. zone_name = "cb-dnsrec-{0}.com.".format(helpers.get_uuid())
  38. def create_dns_rec(name):
  39. if name:
  40. name = name + "." + zone_name
  41. else:
  42. name = zone_name
  43. return test_zone.records.create(
  44. name, DnsRecordType.A, data='10.1.1.1')
  45. def cleanup_dns_rec(dns_rec):
  46. if dns_rec:
  47. dns_rec.delete()
  48. with cb_helpers.cleanup_action(lambda: test_zone.delete()):
  49. test_zone = self.provider.dns.host_zones.create(
  50. zone_name, "admin@cloudve.org")
  51. sit.check_crud(self, test_zone.records, DnsRecord,
  52. "cb-dnsrec", create_dns_rec,
  53. cleanup_dns_rec, skip_name_check=True)
  54. @helpers.skipIfNoService(['dns.host_zones'])
  55. def test_create_wildcard_dns_record(self):
  56. test_zone = None
  57. zone_name = "cb-dnswild-{0}.com.".format(helpers.get_uuid())
  58. with cb_helpers.cleanup_action(lambda: test_zone.delete()):
  59. test_zone = self.provider.dns.host_zones.create(
  60. zone_name, "admin@cloudve.org")
  61. test_rec = None
  62. with cb_helpers.cleanup_action(lambda: test_rec.delete()):
  63. test_rec = test_zone.records.create(
  64. "*.cb-wildcard." + zone_name, DnsRecordType.A,
  65. data='10.1.1.1')
  66. @helpers.skipIfNoService(['dns.host_zones'])
  67. def test_dns_record_properties(self):
  68. test_zone = None
  69. zone_name = "cb-recprop-{0}.com.".format(helpers.get_uuid())
  70. with cb_helpers.cleanup_action(lambda: test_zone.delete()):
  71. test_zone = self.provider.dns.host_zones.create(
  72. zone_name, "admin@cloudve.org")
  73. test_rec = None
  74. with cb_helpers.cleanup_action(lambda: test_rec.delete()):
  75. zone_name = "subdomain." + zone_name
  76. test_rec = test_zone.records.create(
  77. zone_name, DnsRecordType.CNAME, data='hello.com.', ttl=500)
  78. self.assertEqual(test_rec.zone_id, test_zone.id)
  79. self.assertEqual(test_rec.type, DnsRecordType.CNAME)
  80. self.assertEqual(test_rec.data, ['hello.com.'])
  81. self.assertEqual(test_rec.ttl, 500)
  82. # Check setting data array
  83. test_rec2 = None
  84. with cb_helpers.cleanup_action(lambda: test_rec2.delete()):
  85. MX_DATA = ['10 mx1.hello.com.', '20 mx2.hello.com.']
  86. test_rec2 = test_zone.records.create(
  87. zone_name, DnsRecordType.MX, data=MX_DATA, ttl=300)
  88. self.assertEqual(test_rec2.zone_id, test_zone.id)
  89. self.assertEqual(test_rec2.type, DnsRecordType.MX)
  90. self.assertSetEqual(set(test_rec2.data), set(MX_DATA))
  91. self.assertEqual(test_rec2.ttl, 300)
  92. @helpers.skipIfNoService(['dns.host_zones'])
  93. def test_create_dns_rec_not_fully_qualified(self):
  94. test_zone = None
  95. root_zone_name = "cb-recprop-{0}.com.".format(helpers.get_uuid())
  96. with cb_helpers.cleanup_action(lambda: test_zone.delete()):
  97. test_zone = self.provider.dns.host_zones.create(
  98. root_zone_name, "admin@cloudve.org")
  99. test_rec = None
  100. with cb_helpers.cleanup_action(lambda: test_rec.delete()):
  101. zone_name = "subdomain." + root_zone_name
  102. test_rec = test_zone.records.create(
  103. zone_name, DnsRecordType.CNAME, data='hello.com', ttl=500)
  104. with cb_helpers.cleanup_action(lambda: test_rec.delete()):
  105. test_rec = test_zone.records.create(
  106. root_zone_name, DnsRecordType.MX,
  107. data=['10 mx1.hello.com', '20 mx2.hello.com'], ttl=500)