main
go 63 lines 1.52 KB
Raw
1 package njalla
2
3 import (
4 "context"
5 "encoding/json"
6 "testing"
7 )
8
9 func TestChallengeProviderRequiresToken(t *testing.T) {
10 t.Parallel()
11
12 provider := New("")
13 challengeProvider, err := provider.ChallengeProvider(context.Background())
14 if challengeProvider != nil {
15 t.Fatalf("ChallengeProvider() provider = %T, want nil", challengeProvider)
16 }
17 if err == nil || err.Error() != "njalla token is required" {
18 t.Fatalf("ChallengeProvider() error = %v, want local token error", err)
19 }
20 }
21
22 func TestRelativeRecordName(t *testing.T) {
23 t.Parallel()
24
25 testCases := []struct {
26 name string
27 fqdn string
28 want string
29 }{
30 {name: "apex", fqdn: "example.com", want: "@"},
31 {name: "subdomain", fqdn: "portal.example.com", want: "portal"},
32 {name: "wildcard", fqdn: "*.example.com", want: "*"},
33 {name: "nested", fqdn: "_ens.portal.example.com", want: "_ens.portal"},
34 }
35
36 for _, tc := range testCases {
37 t.Run(tc.name, func(t *testing.T) {
38 t.Parallel()
39
40 got, err := relativeRecordName(tc.fqdn, "example.com")
41 if err != nil {
42 t.Fatalf("relativeRecordName() error = %v", err)
43 }
44 if got != tc.want {
45 t.Fatalf("relativeRecordName() = %q, want %q", got, tc.want)
46 }
47 })
48 }
49 }
50
51 func TestRecordIDUnmarshal(t *testing.T) {
52 t.Parallel()
53
54 for _, raw := range []string{`{"id":"123"}`, `{"id":123}`} {
55 var record record
56 if err := json.Unmarshal([]byte(raw), &record); err != nil {
57 t.Fatalf("json.Unmarshal(%s) error = %v", raw, err)
58 }
59 if record.ID.String() != "123" {
60 t.Fatalf("record id = %q, want 123", record.ID.String())
61 }
62 }
63 }