Completed
Push — master ( 666d36...a3ce9d )
by Sam
02:53
created

ReverseTest::testReverseIpv6Record()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 38

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 38
rs 9.312
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of Badcow DNS Library.
5
 *
6
 * (c) Samuel Williams <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Badcow\DNS\Tests;
13
14
use Badcow\DNS\ZoneBuilder;
15
use Badcow\DNS\Zone;
16
use Badcow\DNS\Ip\Toolbox;
17
use Badcow\DNS\Rdata\Factory;
18
use Badcow\DNS\ResourceRecord;
19
use Badcow\DNS\Classes;
20
21
class ReverseTest extends TestCase
22
{
23
    /**
24
     * @var string
25
     */
26
    private $expectedIpv4Record = <<< 'TXT'
27
$ORIGIN 8.168.192.in-addr.arpa.
28
$TTL 14400
29
@ IN SOA example.com. post.example.com. 2015010101 3600 14400 604800 3600
30
@ IN NS ns1.example.com.
31
@ IN NS ns2.example.com.
32
1 IN PTR foo1.example.com.
33
2 IN PTR foo2.example.com.
34
3 IN PTR foo3.example.com.
35
4 IN PTR foo4.example.com.
36
5 IN PTR foo5.example.com.
37
38
TXT;
39
40
    /**
41
     * @var string
42
     */
43
    private $expectedIpv6Record = <<< 'TXT'
44
$ORIGIN 1.2.0.0.3.8.f.0.1.0.0.2.ip6.arpa.
45
$TTL 14400
46
@ IN SOA example.com. post.example.com. 2015010101 3600 14400 604800 3600
47
@ IN NS ns1.example.com.
48
@ IN NS ns2.example.com.
49
8 IN PTR foo8.example.com.
50
9 IN PTR foo9.example.com.
51
a IN PTR fooa.example.com.
52
b IN PTR foob.example.com.
53
c IN PTR fooc.example.com.
54
55
TXT;
56
57
    protected function setUp()
58
    {
59
        $this->normaliseLineFeeds($this->expectedIpv4Record);
60
        $this->normaliseLineFeeds($this->expectedIpv6Record);
61
    }
62
63
    public function testReverseIpv4Record()
64
    {
65
        $origin = Toolbox::reverseIpv4('192.168.8');
66
67
        $soa = new ResourceRecord('@', Factory::Soa(
68
            'example.com.',
69
            'post.example.com.',
70
            2015010101,
71
            3600,
72
            14400,
73
            604800,
74
            3600
75
        ), null, Classes::INTERNET);
76
77
        $ns1 = new ResourceRecord('@', Factory::Ns('ns1.example.com.'), null, Classes::INTERNET);
78
        $ns2 = new ResourceRecord('@', Factory::Ns('ns2.example.com.'), null, Classes::INTERNET);
79
80
        $foo1 = new ResourceRecord('1', Factory::Ptr('foo1.example.com.'), null, Classes::INTERNET);
81
        $foo2 = new ResourceRecord('2', Factory::Ptr('foo2.example.com.'), null, Classes::INTERNET);
82
        $foo3 = new ResourceRecord('3', Factory::Ptr('foo3.example.com.'), null, Classes::INTERNET);
83
        $foo4 = new ResourceRecord('4', Factory::Ptr('foo4.example.com.'), null, Classes::INTERNET);
84
        $foo5 = new ResourceRecord('5', Factory::Ptr('foo5.example.com.'), null, Classes::INTERNET);
85
86
        $zone = new Zone($origin, 14400, [
87
            $soa,
88
            $ns1,
89
            $ns2,
90
            $foo1,
91
            $foo2,
92
            $foo3,
93
            $foo4,
94
            $foo5,
95
        ]);
96
97
        $builder = new ZoneBuilder();
98
99
        $this->assertEquals($this->expectedIpv4Record, $builder->build($zone));
100
    }
101
102
    public function testReverseIpv6Record()
103
    {
104
        $origin = Toolbox::reverseIpv6('2001:f83:21');
105
106
        $soa = new ResourceRecord('@', Factory::Soa(
107
            'example.com.',
108
            'post.example.com.',
109
            2015010101,
110
            3600,
111
            14400,
112
            604800,
113
            3600
114
        ), null, Classes::INTERNET);
115
116
        $ns1 = new ResourceRecord('@', Factory::Ns('ns1.example.com.'), null, Classes::INTERNET);
117
        $ns2 = new ResourceRecord('@', Factory::Ns('ns2.example.com.'), null, Classes::INTERNET);
118
119
        $foo8 = new ResourceRecord('8', Factory::Ptr('foo8.example.com.'), null, Classes::INTERNET);
120
        $foo9 = new ResourceRecord('9', Factory::Ptr('foo9.example.com.'), null, Classes::INTERNET);
121
        $fooa = new ResourceRecord('a', Factory::Ptr('fooa.example.com.'), null, Classes::INTERNET);
122
        $foob = new ResourceRecord('b', Factory::Ptr('foob.example.com.'), null, Classes::INTERNET);
123
        $fooc = new ResourceRecord('c', Factory::Ptr('fooc.example.com.'), null, Classes::INTERNET);
124
125
        $zone = new Zone($origin, 14400, [
126
            $soa,
127
            $ns1,
128
            $ns2,
129
            $foo8,
130
            $foo9,
131
            $fooa,
132
            $foob,
133
            $fooc,
134
        ]);
135
136
        $builder = new ZoneBuilder();
137
138
        $this->assertEquals($this->expectedIpv6Record, $builder->build($zone));
139
    }
140
}
141