2018-04-03 02:50:15 +00:00
package bluecat
import (
"os"
"testing"
"time"
2018-05-30 17:53:04 +00:00
2018-10-12 17:29:18 +00:00
"github.com/stretchr/testify/require"
2018-04-03 02:50:15 +00:00
)
var (
2018-10-12 17:29:18 +00:00
liveTest bool
envTestServer string
envTestUserName string
envTestPassword string
envTestConfigName string
envTestDNSView string
envTestDomain string
2018-04-03 02:50:15 +00:00
)
func init ( ) {
2018-10-12 17:29:18 +00:00
envTestServer = os . Getenv ( "BLUECAT_SERVER_URL" )
envTestUserName = os . Getenv ( "BLUECAT_USER_NAME" )
envTestPassword = os . Getenv ( "BLUECAT_PASSWORD" )
envTestDomain = os . Getenv ( "BLUECAT_DOMAIN" )
envTestConfigName = os . Getenv ( "BLUECAT_CONFIG_NAME" )
envTestDNSView = os . Getenv ( "BLUECAT_DNS_VIEW" )
if len ( envTestServer ) > 0 &&
len ( envTestDomain ) > 0 &&
len ( envTestUserName ) > 0 &&
len ( envTestPassword ) > 0 &&
len ( envTestConfigName ) > 0 &&
len ( envTestDNSView ) > 0 {
liveTest = true
}
}
func restoreEnv ( ) {
os . Setenv ( "BLUECAT_SERVER_URL" , envTestServer )
os . Setenv ( "BLUECAT_USER_NAME" , envTestUserName )
os . Setenv ( "BLUECAT_PASSWORD" , envTestPassword )
os . Setenv ( "BLUECAT_CONFIG_NAME" , envTestConfigName )
os . Setenv ( "BLUECAT_DNS_VIEW" , envTestDNSView )
}
func TestNewDNSProvider ( t * testing . T ) {
testCases := [ ] struct {
desc string
envVars map [ string ] string
expected string
} {
{
desc : "success" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "http://localhost" ,
"BLUECAT_USER_NAME" : "A" ,
"BLUECAT_PASSWORD" : "B" ,
"BLUECAT_CONFIG_NAME" : "C" ,
"BLUECAT_DNS_VIEW" : "D" ,
} ,
} ,
{
desc : "missing credentials" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "" ,
"BLUECAT_USER_NAME" : "" ,
"BLUECAT_PASSWORD" : "" ,
"BLUECAT_CONFIG_NAME" : "" ,
"BLUECAT_DNS_VIEW" : "" ,
} ,
expected : "bluecat: some credentials information are missing: BLUECAT_SERVER_URL,BLUECAT_USER_NAME,BLUECAT_PASSWORD,BLUECAT_CONFIG_NAME,BLUECAT_DNS_VIEW" ,
} ,
{
desc : "missing server url" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "" ,
"BLUECAT_USER_NAME" : "A" ,
"BLUECAT_PASSWORD" : "B" ,
"BLUECAT_CONFIG_NAME" : "C" ,
"BLUECAT_DNS_VIEW" : "D" ,
} ,
expected : "bluecat: some credentials information are missing: BLUECAT_SERVER_URL" ,
} ,
{
desc : "missing username" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "http://localhost" ,
"BLUECAT_USER_NAME" : "" ,
"BLUECAT_PASSWORD" : "B" ,
"BLUECAT_CONFIG_NAME" : "C" ,
"BLUECAT_DNS_VIEW" : "D" ,
} ,
expected : "bluecat: some credentials information are missing: BLUECAT_USER_NAME" ,
} ,
{
desc : "missing password" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "http://localhost" ,
"BLUECAT_USER_NAME" : "A" ,
"BLUECAT_PASSWORD" : "" ,
"BLUECAT_CONFIG_NAME" : "C" ,
"BLUECAT_DNS_VIEW" : "D" ,
} ,
expected : "bluecat: some credentials information are missing: BLUECAT_PASSWORD" ,
} ,
{
desc : "missing config name" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "http://localhost" ,
"BLUECAT_USER_NAME" : "A" ,
"BLUECAT_PASSWORD" : "B" ,
"BLUECAT_CONFIG_NAME" : "" ,
"BLUECAT_DNS_VIEW" : "D" ,
} ,
expected : "bluecat: some credentials information are missing: BLUECAT_CONFIG_NAME" ,
} ,
{
desc : "missing DNS view" ,
envVars : map [ string ] string {
"BLUECAT_SERVER_URL" : "http://localhost" ,
"BLUECAT_USER_NAME" : "A" ,
"BLUECAT_PASSWORD" : "B" ,
"BLUECAT_CONFIG_NAME" : "C" ,
"BLUECAT_DNS_VIEW" : "" ,
} ,
expected : "bluecat: some credentials information are missing: BLUECAT_DNS_VIEW" ,
} ,
}
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 )
}
} )
2018-04-03 02:50:15 +00:00
}
}
2018-10-12 17:29:18 +00:00
func TestNewDNSProviderConfig ( t * testing . T ) {
testCases := [ ] struct {
desc string
baseURL string
userName string
password string
configName string
dnsView string
expected string
} {
{
desc : "success" ,
baseURL : "http://localhost" ,
userName : "A" ,
password : "B" ,
configName : "C" ,
dnsView : "D" ,
} ,
{
desc : "missing credentials" ,
expected : "bluecat: credentials missing" ,
} ,
{
desc : "missing base URL" ,
baseURL : "" ,
userName : "A" ,
password : "B" ,
configName : "C" ,
dnsView : "D" ,
expected : "bluecat: credentials missing" ,
} ,
{
desc : "missing username" ,
baseURL : "http://localhost" ,
userName : "" ,
password : "B" ,
configName : "C" ,
dnsView : "D" ,
expected : "bluecat: credentials missing" ,
} ,
{
desc : "missing password" ,
baseURL : "http://localhost" ,
userName : "A" ,
password : "" ,
configName : "C" ,
dnsView : "D" ,
expected : "bluecat: credentials missing" ,
} ,
{
desc : "missing config name" ,
baseURL : "http://localhost" ,
userName : "A" ,
password : "B" ,
configName : "" ,
dnsView : "D" ,
expected : "bluecat: credentials missing" ,
} ,
{
desc : "missing DNS view" ,
baseURL : "http://localhost" ,
userName : "A" ,
password : "B" ,
configName : "C" ,
dnsView : "" ,
expected : "bluecat: credentials missing" ,
} ,
}
for _ , test := range testCases {
t . Run ( test . desc , func ( t * testing . T ) {
defer restoreEnv ( )
os . Unsetenv ( "BLUECAT_SERVER_URL" )
os . Unsetenv ( "BLUECAT_USER_NAME" )
os . Unsetenv ( "BLUECAT_PASSWORD" )
os . Unsetenv ( "BLUECAT_CONFIG_NAME" )
os . Unsetenv ( "BLUECAT_DNS_VIEW" )
config := NewDefaultConfig ( )
config . BaseURL = test . baseURL
config . UserName = test . userName
config . Password = test . password
config . ConfigName = test . configName
config . DNSView = test . dnsView
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 {
2018-04-03 02:50:15 +00:00
t . Skip ( "skipping live test" )
}
2018-10-12 17:29:18 +00:00
restoreEnv ( )
2018-04-03 02:50:15 +00:00
provider , err := NewDNSProvider ( )
2018-10-12 17:29:18 +00:00
require . NoError ( t , err )
2018-04-03 02:50:15 +00:00
2018-10-12 17:29:18 +00:00
err = provider . Present ( envTestDomain , "" , "123d==" )
require . NoError ( t , err )
2018-04-03 02:50:15 +00:00
}
2018-10-12 17:29:18 +00:00
func TestLiveCleanUp ( t * testing . T ) {
if ! liveTest {
2018-04-03 02:50:15 +00:00
t . Skip ( "skipping live test" )
}
2018-10-12 17:29:18 +00:00
restoreEnv ( )
2018-04-03 02:50:15 +00:00
provider , err := NewDNSProvider ( )
2018-10-12 17:29:18 +00:00
require . NoError ( t , err )
time . Sleep ( time . Second * 1 )
2018-04-03 02:50:15 +00:00
2018-10-12 17:29:18 +00:00
err = provider . CleanUp ( envTestDomain , "" , "123d==" )
require . NoError ( t , err )
2018-04-03 02:50:15 +00:00
}