~allenap/maas/ipmi-power-confusion--bug-1560830

« back to all changes in this revision

Viewing changes to src/maasserver/models/tests/test_dnsresource.py

  • Committer: MAAS Lander
  • Author(s): LaMont Jones
  • Date: 2016-04-25 18:06:57 UTC
  • mfrom: (4933.2.9 bug-1571621)
  • Revision ID: maas_lander-20160425180657-flyd1jupqx7ec9zk
[r=mpontillo][bug=1562919,1571621,1573690][author=lamont] Handle delegations for subdomains.  Fix the handling of fqdn in the dns apis when it refers to the top of a domain.

Show diffs side-by-side

added added

removed removed

Lines of Context:
119
119
            ("foo", "test.example.com"),
120
120
            separate_fqdn("foo.test.example.com", 'A'))
121
121
 
 
122
    def test_separate_fqdn_returns_atsign_for_top_of_domain(self):
 
123
        name = "%s.%s.%s" % (
 
124
            factory.make_name("a"),
 
125
            factory.make_name("b"),
 
126
            factory.make_name("c"))
 
127
        factory.make_Domain(name=name)
 
128
        self.assertEqual(('@', name), separate_fqdn(name))
 
129
 
 
130
    def test_separate_fqdn_allows_domain_override(self):
 
131
        parent = "%s.%s" % (
 
132
            factory.make_name("b"),
 
133
            factory.make_name("c"))
 
134
        label = factory.make_name("a")
 
135
        name = "%s.%s" % (label, parent)
 
136
        factory.make_Domain(name=name)
 
137
        self.assertEqual(
 
138
            (label, parent), separate_fqdn(name, domainname=parent))
 
139
 
122
140
    def test_creates_dnsresource(self):
123
141
        name = factory.make_name('name')
124
142
        domain = factory.make_Domain()
137
155
        self.assertThat(dnsresource_from_db, MatchesStructure.byEquality(
138
156
            name=name))
139
157
 
 
158
    def test_fqdn_returns_correctly_for_atsign(self):
 
159
        name = '@'
 
160
        domain = factory.make_Domain()
 
161
        dnsresource = DNSResource(name=name, domain=domain)
 
162
        dnsresource.save()
 
163
        sip = factory.make_StaticIPAddress()
 
164
        dnsresource.ip_addresses.add(sip)
 
165
        self.assertEqual(domain.name, dnsresource.fqdn)
 
166
 
140
167
    def test_allows_underscores_without_addresses(self):
141
168
        name = factory.make_name('n_me')
142
169
        domain = factory.make_Domain()
196
223
                    "{'__all__': "
197
224
                    "['Cannot add address: CNAME present.']")):
198
225
            dnsrr.save()
 
226
 
 
227
    def test_get_addresses_returns_addresses(self):
 
228
        # Verify that the return includes node addresses, and
 
229
        # dnsresource-attached addresses.
 
230
        name = factory.make_name()
 
231
        domain = factory.make_Domain()
 
232
        dnsresource = DNSResource(name=name, domain=domain)
 
233
        dnsresource.save()
 
234
        subnet = factory.make_Subnet()
 
235
        node = factory.make_Node_with_Interface_on_Subnet(
 
236
            subnet=subnet, hostname=name, domain=domain)
 
237
        sip1 = factory.make_StaticIPAddress()
 
238
        node.interface_set.first().ip_addresses.add(sip1)
 
239
        sip2 = factory.make_StaticIPAddress()
 
240
        dnsresource.ip_addresses.add(sip2)
 
241
        self.assertItemsEqual(
 
242
            (sip1.get_ip(), sip2.get_ip()),
 
243
            dnsresource.get_addresses())