@@ -2,12 +2,201 @@ package unit
22
33import (
44 "context"
5+ "fmt"
6+ "github.com/jarcoal/httpmock"
57 "testing"
68
79 "github.com/linode/linodego"
810 "github.com/stretchr/testify/assert"
911)
1012
13+ func TestDomain_List (t * testing.T ) {
14+ fixtureData , err := fixtures .GetFixture ("domain_list" )
15+ assert .NoError (t , err )
16+
17+ var base ClientBaseCase
18+ base .SetUp (t )
19+ defer base .TearDown (t )
20+
21+ base .MockGet (formatMockAPIPath ("domains" ), fixtureData )
22+
23+ domains , err := base .Client .ListDomains (context .Background (), & linodego.ListOptions {})
24+ assert .NoError (t , err )
25+ assert .Len (t , domains , 1 )
26+
27+ domain := domains [0 ]
28+ assert .Equal (t , 1234 , domain .ID )
29+ assert .Equal (t , "example.org" , domain .Domain )
30+ assert .Equal (t , 300 , domain .ExpireSec )
31+ assert .Equal (t , 300 , domain .RefreshSec )
32+ assert .Equal (t , 300 , domain .RetrySec )
33+ assert .
Equal (
t ,
"[email protected] " ,
domain .
SOAEmail )
34+ assert .Equal (t , linodego .DomainStatus ("active" ), domain .Status )
35+ assert .Equal (t , []string {"example tag" , "another example" }, domain .Tags )
36+ assert .Equal (t , 300 , domain .TTLSec )
37+ assert .Equal (t , linodego .DomainType ("master" ), domain .Type )
38+ assert .Empty (t , domain .MasterIPs )
39+ assert .Empty (t , domain .Description )
40+ }
41+
42+ func TestDomain_Get (t * testing.T ) {
43+ fixtureData , err := fixtures .GetFixture ("domain_get" )
44+ assert .NoError (t , err )
45+
46+ var base ClientBaseCase
47+ base .SetUp (t )
48+ defer base .TearDown (t )
49+
50+ domainID := 1234
51+ base .MockGet (formatMockAPIPath ("domains/%d" , domainID ), fixtureData )
52+
53+ domain , err := base .Client .GetDomain (context .Background (), domainID )
54+
55+ assert .NoError (t , err )
56+
57+ assert .Equal (t , 1234 , domain .ID )
58+ assert .Equal (t , "example.org" , domain .Domain )
59+ assert .Equal (t , 300 , domain .ExpireSec )
60+ assert .Equal (t , 300 , domain .RefreshSec )
61+ assert .Equal (t , 300 , domain .RetrySec )
62+ assert .
Equal (
t ,
"[email protected] " ,
domain .
SOAEmail )
63+ assert .Equal (t , linodego .DomainStatus ("active" ), domain .Status )
64+ assert .Equal (t , []string {"example tag" , "another example" }, domain .Tags )
65+ assert .Equal (t , 300 , domain .TTLSec )
66+ assert .Equal (t , linodego .DomainType ("master" ), domain .Type )
67+ assert .Empty (t , domain .MasterIPs )
68+ assert .Empty (t , domain .Description )
69+ }
70+
71+ func TestDomain_Create (t * testing.T ) {
72+ fixtureData , err := fixtures .GetFixture ("domain_create" )
73+ assert .NoError (t , err )
74+
75+ var base ClientBaseCase
76+ base .SetUp (t )
77+ defer base .TearDown (t )
78+
79+ requestData := linodego.DomainCreateOptions {
80+ Domain : "example.org" ,
81+ Type : linodego .DomainType ("master" ),
82+ Description : "" ,
83+ 84+ RetrySec : 300 ,
85+ MasterIPs : []string {},
86+ AXfrIPs : []string {},
87+ Tags : []string {"example tag" , "another example" },
88+ ExpireSec : 300 ,
89+ RefreshSec : 300 ,
90+ TTLSec : 300 ,
91+ Status : linodego .DomainStatus ("active" ),
92+ }
93+
94+ base .MockPost (formatMockAPIPath ("domains" ), fixtureData )
95+
96+ domain , err := base .Client .CreateDomain (context .Background (), requestData )
97+
98+ assert .NoError (t , err )
99+
100+ assert .Equal (t , 1234 , domain .ID )
101+ assert .Equal (t , "example.org" , domain .Domain )
102+ assert .Equal (t , 300 , domain .ExpireSec )
103+ assert .Equal (t , 300 , domain .RefreshSec )
104+ assert .Equal (t , 300 , domain .RetrySec )
105+ assert .
Equal (
t ,
"[email protected] " ,
domain .
SOAEmail )
106+ assert .Equal (t , linodego .DomainStatus ("active" ), domain .Status )
107+ assert .Equal (t , []string {"example tag" , "another example" }, domain .Tags )
108+ assert .Equal (t , 300 , domain .TTLSec )
109+ assert .Equal (t , linodego .DomainType ("master" ), domain .Type )
110+ assert .Empty (t , domain .MasterIPs )
111+ assert .Empty (t , domain .Description )
112+ }
113+
114+ func TestDomain_Update (t * testing.T ) {
115+ fixtureData , err := fixtures .GetFixture ("domain_update" )
116+ assert .NoError (t , err )
117+
118+ var base ClientBaseCase
119+ base .SetUp (t )
120+ defer base .TearDown (t )
121+
122+ domainID := 1234
123+
124+ requestData := linodego.DomainUpdateOptions {
125+ Domain : "example.org" ,
126+ Type : linodego .DomainType ("master" ),
127+ Description : "" ,
128+ 129+ RetrySec : 300 ,
130+ MasterIPs : []string {},
131+ AXfrIPs : []string {},
132+ Tags : []string {"example tag" , "another example" },
133+ ExpireSec : 300 ,
134+ RefreshSec : 300 ,
135+ TTLSec : 300 ,
136+ Status : linodego .DomainStatus ("active" ),
137+ }
138+
139+ base .MockPut (formatMockAPIPath ("domains/%d" , domainID ), fixtureData )
140+
141+ domain , err := base .Client .UpdateDomain (context .Background (), domainID , requestData )
142+
143+ assert .NoError (t , err )
144+
145+ assert .Equal (t , 1234 , domain .ID )
146+ assert .Equal (t , "example.org" , domain .Domain )
147+ assert .Equal (t , 300 , domain .ExpireSec )
148+ assert .Equal (t , 300 , domain .RefreshSec )
149+ assert .Equal (t , 300 , domain .RetrySec )
150+ assert .
Equal (
t ,
"[email protected] " ,
domain .
SOAEmail )
151+ assert .Equal (t , linodego .DomainStatus ("active" ), domain .Status )
152+ assert .Equal (t , []string {"example tag" , "another example" }, domain .Tags )
153+ assert .Equal (t , 300 , domain .TTLSec )
154+ assert .Equal (t , linodego .DomainType ("master" ), domain .Type )
155+ assert .Empty (t , domain .MasterIPs )
156+ assert .Empty (t , domain .Description )
157+ }
158+
159+ func TestDomain_Delete (t * testing.T ) {
160+ client := createMockClient (t )
161+
162+ domainID := 1234
163+
164+ httpmock .RegisterRegexpResponder ("DELETE" , mockRequestURL (t , fmt .Sprintf ("domains/%d" , domainID )),
165+ httpmock .NewStringResponder (200 , "{}" ))
166+
167+ if err := client .DeleteDomain (context .Background (), domainID ); err != nil {
168+ t .Fatal (err )
169+ }
170+ }
171+
172+ func TestDomain_GetDomainZoneFile (t * testing.T ) {
173+ fixtureData , err := fixtures .GetFixture ("domain_get_domainzonefile" )
174+ assert .NoError (t , err )
175+
176+ var base ClientBaseCase
177+ base .SetUp (t )
178+ defer base .TearDown (t )
179+
180+ domainID := 1234
181+ base .MockGet (formatMockAPIPath ("domains/%d/zone-file" , domainID ), fixtureData )
182+
183+ domain , err := base .Client .GetDomainZoneFile (context .Background (), domainID )
184+ assert .NoError (t , err )
185+
186+ expectedZoneFile := []string {
187+ "; example.com [123]" ,
188+ "$TTL 864000" ,
189+ "@ IN SOA ns1.linode.com. user.example.com. 2021000066 14400 14400 1209600 86400" ,
190+ "@ NS ns1.linode.com." ,
191+ "@ NS ns2.linode.com." ,
192+ "@ NS ns3.linode.com." ,
193+ "@ NS ns4.linode.com." ,
194+ "@ NS ns5.linode.com." ,
195+ }
196+
197+ assert .Equal (t , expectedZoneFile , domain .ZoneFile )
198+ }
199+
11200func TestDomain_Clone (t * testing.T ) {
12201 fixtureData , err := fixtures .GetFixture ("domain_clone" )
13202 assert .NoError (t , err )
0 commit comments