122c354163
* refactor: min TTL * refactor: sandbox. * refactor: tests homogenization. * refactor: missing require.
274 lines
6.7 KiB
Go
274 lines
6.7 KiB
Go
package azure
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var (
|
|
liveTest bool
|
|
envTestClientID string
|
|
envTestClientSecret string
|
|
envTestSubscriptionID string
|
|
envTestTenantID string
|
|
envTestResourceGroup string
|
|
envTestDomain string
|
|
)
|
|
|
|
func init() {
|
|
envTestClientID = os.Getenv("AZURE_CLIENT_ID")
|
|
envTestClientSecret = os.Getenv("AZURE_CLIENT_SECRET")
|
|
envTestSubscriptionID = os.Getenv("AZURE_SUBSCRIPTION_ID")
|
|
envTestTenantID = os.Getenv("AZURE_TENANT_ID")
|
|
envTestResourceGroup = os.Getenv("AZURE_RESOURCE_GROUP")
|
|
envTestDomain = os.Getenv("AZURE_DOMAIN")
|
|
|
|
if len(envTestClientID) > 0 && len(envTestClientSecret) > 0 {
|
|
liveTest = true
|
|
}
|
|
}
|
|
|
|
func restoreEnv() {
|
|
os.Setenv("AZURE_CLIENT_ID", envTestClientID)
|
|
os.Setenv("AZURE_CLIENT_SECRET", envTestClientSecret)
|
|
os.Setenv("AZURE_SUBSCRIPTION_ID", envTestSubscriptionID)
|
|
os.Setenv("AZURE_TENANT_ID", envTestTenantID)
|
|
os.Setenv("AZURE_RESOURCE_GROUP", envTestResourceGroup)
|
|
}
|
|
|
|
func TestNewDNSProvider(t *testing.T) {
|
|
testCases := []struct {
|
|
desc string
|
|
envVars map[string]string
|
|
expected string
|
|
}{
|
|
{
|
|
desc: "success",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "A",
|
|
"AZURE_CLIENT_SECRET": "B",
|
|
"AZURE_SUBSCRIPTION_ID": "C",
|
|
"AZURE_TENANT_ID": "D",
|
|
"AZURE_RESOURCE_GROUP": "E",
|
|
},
|
|
},
|
|
{
|
|
desc: "missing credentials",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "",
|
|
"AZURE_CLIENT_SECRET": "",
|
|
"AZURE_SUBSCRIPTION_ID": "",
|
|
"AZURE_TENANT_ID": "",
|
|
"AZURE_RESOURCE_GROUP": "",
|
|
},
|
|
expected: "azure: some credentials information are missing: AZURE_CLIENT_ID,AZURE_CLIENT_SECRET,AZURE_SUBSCRIPTION_ID,AZURE_TENANT_ID,AZURE_RESOURCE_GROUP",
|
|
},
|
|
{
|
|
desc: "missing client id",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "",
|
|
"AZURE_CLIENT_SECRET": "B",
|
|
"AZURE_SUBSCRIPTION_ID": "C",
|
|
"AZURE_TENANT_ID": "D",
|
|
"AZURE_RESOURCE_GROUP": "E",
|
|
},
|
|
expected: "azure: some credentials information are missing: AZURE_CLIENT_ID",
|
|
},
|
|
{
|
|
desc: "missing client secret",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "A",
|
|
"AZURE_CLIENT_SECRET": "",
|
|
"AZURE_SUBSCRIPTION_ID": "C",
|
|
"AZURE_TENANT_ID": "D",
|
|
"AZURE_RESOURCE_GROUP": "E",
|
|
},
|
|
expected: "azure: some credentials information are missing: AZURE_CLIENT_SECRET",
|
|
},
|
|
{
|
|
desc: "missing subscription id",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "A",
|
|
"AZURE_CLIENT_SECRET": "B",
|
|
"AZURE_SUBSCRIPTION_ID": "",
|
|
"AZURE_TENANT_ID": "D",
|
|
"AZURE_RESOURCE_GROUP": "E",
|
|
},
|
|
expected: "azure: some credentials information are missing: AZURE_SUBSCRIPTION_ID",
|
|
},
|
|
{
|
|
desc: "missing tenant id",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "A",
|
|
"AZURE_CLIENT_SECRET": "B",
|
|
"AZURE_SUBSCRIPTION_ID": "C",
|
|
"AZURE_TENANT_ID": "",
|
|
"AZURE_RESOURCE_GROUP": "E",
|
|
},
|
|
expected: "azure: some credentials information are missing: AZURE_TENANT_ID",
|
|
},
|
|
{
|
|
desc: "missing resource group",
|
|
envVars: map[string]string{
|
|
"AZURE_CLIENT_ID": "A",
|
|
"AZURE_CLIENT_SECRET": "B",
|
|
"AZURE_SUBSCRIPTION_ID": "C",
|
|
"AZURE_TENANT_ID": "D",
|
|
"AZURE_RESOURCE_GROUP": "",
|
|
},
|
|
expected: "azure: some credentials information are missing: AZURE_RESOURCE_GROUP",
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
defer restoreEnv()
|
|
for key, value := range test.envVars {
|
|
if len(value) == 0 {
|
|
os.Unsetenv(key)
|
|
} else {
|
|
os.Setenv(key, value)
|
|
}
|
|
}
|
|
|
|
p, err := NewDNSProvider()
|
|
|
|
if len(test.expected) == 0 {
|
|
require.NoError(t, err)
|
|
require.NotNil(t, p)
|
|
require.NotNil(t, p.config)
|
|
} else {
|
|
require.EqualError(t, err, test.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNewDNSProviderConfig(t *testing.T) {
|
|
testCases := []struct {
|
|
desc string
|
|
clientID string
|
|
clientSecret string
|
|
subscriptionID string
|
|
tenantID string
|
|
resourceGroup string
|
|
expected string
|
|
}{
|
|
{
|
|
desc: "success",
|
|
clientID: "A",
|
|
clientSecret: "B",
|
|
subscriptionID: "C",
|
|
tenantID: "D",
|
|
resourceGroup: "E",
|
|
},
|
|
{
|
|
desc: "missing credentials",
|
|
expected: "azure: some credentials information are missing",
|
|
},
|
|
{
|
|
desc: "missing client id",
|
|
clientID: "",
|
|
clientSecret: "B",
|
|
subscriptionID: "C",
|
|
tenantID: "D",
|
|
resourceGroup: "E",
|
|
expected: "azure: some credentials information are missing",
|
|
},
|
|
{
|
|
desc: "missing client secret",
|
|
clientID: "A",
|
|
clientSecret: "",
|
|
subscriptionID: "C",
|
|
tenantID: "D",
|
|
resourceGroup: "E",
|
|
expected: "azure: some credentials information are missing",
|
|
},
|
|
{
|
|
desc: "missing subscription id",
|
|
clientID: "A",
|
|
clientSecret: "B",
|
|
subscriptionID: "",
|
|
tenantID: "D",
|
|
resourceGroup: "E",
|
|
expected: "azure: some credentials information are missing",
|
|
},
|
|
{
|
|
desc: "missing tenant id",
|
|
clientID: "A",
|
|
clientSecret: "B",
|
|
subscriptionID: "C",
|
|
tenantID: "",
|
|
resourceGroup: "E",
|
|
expected: "azure: some credentials information are missing",
|
|
},
|
|
{
|
|
desc: "missing resource group",
|
|
clientID: "A",
|
|
clientSecret: "B",
|
|
subscriptionID: "C",
|
|
tenantID: "D",
|
|
resourceGroup: "",
|
|
expected: "azure: some credentials information are missing",
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
defer restoreEnv()
|
|
os.Unsetenv("AZURE_CLIENT_ID")
|
|
os.Unsetenv("AZURE_CLIENT_SECRET")
|
|
os.Unsetenv("AZURE_SUBSCRIPTION_ID")
|
|
os.Unsetenv("AZURE_TENANT_ID")
|
|
os.Unsetenv("AZURE_RESOURCE_GROUP")
|
|
|
|
config := NewDefaultConfig()
|
|
config.ClientID = test.clientID
|
|
config.ClientSecret = test.clientSecret
|
|
config.SubscriptionID = test.subscriptionID
|
|
config.TenantID = test.tenantID
|
|
config.ResourceGroup = test.resourceGroup
|
|
|
|
p, err := NewDNSProviderConfig(config)
|
|
|
|
if len(test.expected) == 0 {
|
|
require.NoError(t, err)
|
|
require.NotNil(t, p)
|
|
require.NotNil(t, p.config)
|
|
} else {
|
|
require.EqualError(t, err, test.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestLivePresent(t *testing.T) {
|
|
if !liveTest {
|
|
t.Skip("skipping live test")
|
|
}
|
|
|
|
restoreEnv()
|
|
provider, err := NewDNSProvider()
|
|
require.NoError(t, err)
|
|
|
|
err = provider.Present(envTestDomain, "", "123d==")
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestLiveCleanUp(t *testing.T) {
|
|
if !liveTest {
|
|
t.Skip("skipping live test")
|
|
}
|
|
|
|
restoreEnv()
|
|
provider, err := NewDNSProvider()
|
|
require.NoError(t, err)
|
|
|
|
time.Sleep(1 * time.Second)
|
|
|
|
err = provider.CleanUp(envTestDomain, "", "123d==")
|
|
require.NoError(t, err)
|
|
}
|