1package edgedns
2
3import (
4	"fmt"
5	"testing"
6	"time"
7
8	configdns "github.com/akamai/AkamaiOPEN-edgegrid-golang/configdns-v2"
9	"github.com/go-acme/lego/v4/challenge/dns01"
10	"github.com/stretchr/testify/assert"
11	"github.com/stretchr/testify/require"
12)
13
14func TestLivePresent(t *testing.T) {
15	if !envTest.IsLiveTest() {
16		t.Skip("skipping live test")
17	}
18
19	envTest.RestoreEnv()
20	provider, err := NewDNSProvider()
21	require.NoError(t, err)
22
23	err = provider.Present(envTest.GetDomain(), "", "123d==")
24	require.NoError(t, err)
25
26	// Present Twice to handle create / update
27	err = provider.Present(envTest.GetDomain(), "", "123d==")
28	require.NoError(t, err)
29}
30
31func TestLiveCleanUp(t *testing.T) {
32	if !envTest.IsLiveTest() {
33		t.Skip("skipping live test")
34	}
35
36	envTest.RestoreEnv()
37	provider, err := NewDNSProvider()
38	require.NoError(t, err)
39
40	time.Sleep(1 * time.Second)
41
42	err = provider.CleanUp(envTest.GetDomain(), "", "123d==")
43	require.NoError(t, err)
44}
45
46func TestLiveTTL(t *testing.T) {
47	if !envTest.IsLiveTest() {
48		t.Skip("skipping live test")
49	}
50
51	envTest.RestoreEnv()
52
53	provider, err := NewDNSProvider()
54	require.NoError(t, err)
55
56	domain := envTest.GetDomain()
57
58	err = provider.Present(domain, "foo", "bar")
59	require.NoError(t, err)
60
61	defer func() {
62		e := provider.CleanUp(domain, "foo", "bar")
63		if e != nil {
64			t.Log(e)
65		}
66	}()
67
68	fqdn := "_acme-challenge." + domain + "."
69	zone, err := findZone(domain)
70	require.NoError(t, err)
71
72	resourceRecordSets, err := configdns.GetRecordList(zone, fqdn, "TXT")
73	require.NoError(t, err)
74
75	for i, rrset := range resourceRecordSets.Recordsets {
76		if rrset.Name != fqdn {
77			continue
78		}
79
80		t.Run(fmt.Sprintf("testing record set %d", i), func(t *testing.T) {
81			assert.Equal(t, rrset.Name, fqdn)
82			assert.Equal(t, rrset.Type, "TXT")
83			assert.Equal(t, rrset.TTL, dns01.DefaultTTL)
84		})
85	}
86}
87