1package dnspod 2 3import ( 4 "testing" 5 "time" 6 7 "github.com/go-acme/lego/v3/platform/tester" 8 "github.com/stretchr/testify/require" 9) 10 11const envDomain = envNamespace + "DOMAIN" 12 13var envTest = tester.NewEnvTest(EnvAPIKey). 14 WithDomain(envDomain) 15 16func TestNewDNSProvider(t *testing.T) { 17 testCases := []struct { 18 desc string 19 envVars map[string]string 20 expected string 21 }{ 22 { 23 desc: "success", 24 envVars: map[string]string{ 25 EnvAPIKey: "123", 26 }, 27 }, 28 { 29 desc: "missing api key", 30 envVars: map[string]string{ 31 EnvAPIKey: "", 32 }, 33 expected: "dnspod: some credentials information are missing: DNSPOD_API_KEY", 34 }, 35 } 36 37 for _, test := range testCases { 38 t.Run(test.desc, func(t *testing.T) { 39 defer envTest.RestoreEnv() 40 envTest.ClearEnv() 41 42 envTest.Apply(test.envVars) 43 44 p, err := NewDNSProvider() 45 46 if len(test.expected) == 0 { 47 require.NoError(t, err) 48 require.NotNil(t, p) 49 require.NotNil(t, p.config) 50 require.NotNil(t, p.client) 51 } else { 52 require.EqualError(t, err, test.expected) 53 } 54 }) 55 } 56} 57 58func TestNewDNSProviderConfig(t *testing.T) { 59 testCases := []struct { 60 desc string 61 loginToken string 62 expected string 63 }{ 64 { 65 desc: "success", 66 loginToken: "123", 67 }, 68 { 69 desc: "missing credentials", 70 expected: "dnspod: credentials missing", 71 }, 72 } 73 74 for _, test := range testCases { 75 t.Run(test.desc, func(t *testing.T) { 76 config := NewDefaultConfig() 77 config.LoginToken = test.loginToken 78 79 p, err := NewDNSProviderConfig(config) 80 81 if len(test.expected) == 0 { 82 require.NoError(t, err) 83 require.NotNil(t, p) 84 require.NotNil(t, p.config) 85 require.NotNil(t, p.client) 86 } else { 87 require.EqualError(t, err, test.expected) 88 } 89 }) 90 } 91} 92 93func TestLivePresent(t *testing.T) { 94 if !envTest.IsLiveTest() { 95 t.Skip("skipping live test") 96 } 97 98 envTest.RestoreEnv() 99 provider, err := NewDNSProvider() 100 require.NoError(t, err) 101 102 err = provider.Present(envTest.GetDomain(), "", "123d==") 103 require.NoError(t, err) 104} 105 106func TestLiveCleanUp(t *testing.T) { 107 if !envTest.IsLiveTest() { 108 t.Skip("skipping live test") 109 } 110 111 envTest.RestoreEnv() 112 provider, err := NewDNSProvider() 113 require.NoError(t, err) 114 115 time.Sleep(1 * time.Second) 116 117 err = provider.CleanUp(envTest.GetDomain(), "", "123d==") 118 require.NoError(t, err) 119} 120