Skip to content

Commit 0fd46b0

Browse files
authored
add domain and domain record unit test coverage (#656)
1 parent 72f6203 commit 0fd46b0

12 files changed

+540
-1
lines changed

go.work.sum

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
5252
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
5353
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
5454
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
55-
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
5655
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
5756
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
5857
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=

test/unit/domain_test.go

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,201 @@ package unit
22

33
import (
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+
SOAEmail: "[email protected]",
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+
SOAEmail: "[email protected]",
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+
11200
func TestDomain_Clone(t *testing.T) {
12201
fixtureData, err := fixtures.GetFixture("domain_clone")
13202
assert.NoError(t, err)

0 commit comments

Comments
 (0)