summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/xenolf/lego/providers/dns/otc/otc_test.go
blob: 0c05334a90b076420cbae1d93684f81f80056afb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package otc

import (
	"fmt"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/suite"
	"os"
	"testing"
)

type OTCDNSTestSuite struct {
	suite.Suite
	Mock *DNSMock
}

func (s *OTCDNSTestSuite) TearDownSuite() {
	s.Mock.ShutdownServer()
}

func (s *OTCDNSTestSuite) SetupTest() {
	s.Mock = NewDNSMock(s.T())
	s.Mock.Setup()
	s.Mock.HandleAuthSuccessfully()

}

func TestOTCDNSTestSuite(t *testing.T) {
	suite.Run(t, new(OTCDNSTestSuite))
}

func (s *OTCDNSTestSuite) createDNSProvider() (*DNSProvider, error) {
	url := fmt.Sprintf("%s/v3/auth/token", s.Mock.Server.URL)
	return NewDNSProviderCredentials(fakeOTCUserName, fakeOTCPassword, fakeOTCDomainName, fakeOTCProjectName, url)
}

func (s *OTCDNSTestSuite) TestOTCDNSLoginEnv() {
	os.Setenv("OTC_DOMAIN_NAME", "unittest1")
	os.Setenv("OTC_USER_NAME", "unittest2")
	os.Setenv("OTC_PASSWORD", "unittest3")
	os.Setenv("OTC_PROJECT_NAME", "unittest4")
	os.Setenv("OTC_IDENTITY_ENDPOINT", "unittest5")

	provider, err := NewDNSProvider()
	assert.Nil(s.T(), err)
	assert.Equal(s.T(), provider.domainName, "unittest1")
	assert.Equal(s.T(), provider.userName, "unittest2")
	assert.Equal(s.T(), provider.password, "unittest3")
	assert.Equal(s.T(), provider.projectName, "unittest4")
	assert.Equal(s.T(), provider.identityEndpoint, "unittest5")

	os.Setenv("OTC_IDENTITY_ENDPOINT", "")

	provider, err = NewDNSProvider()
	assert.Nil(s.T(), err)
	assert.Equal(s.T(), provider.identityEndpoint, "https://iam.eu-de.otc.t-systems.com:443/v3/auth/tokens")

	os.Clearenv()
}

func (s *OTCDNSTestSuite) TestOTCDNSLoginEnvEmpty() {
	_, err := NewDNSProvider()
	assert.Equal(s.T(), "OTC credentials missing", err.Error())

	os.Clearenv()
}

func (s *OTCDNSTestSuite) TestOTCDNSLogin() {
	otcProvider, err := s.createDNSProvider()

	assert.Nil(s.T(), err)
	err = otcProvider.loginRequest()
	assert.Nil(s.T(), err)
	assert.Equal(s.T(), otcProvider.otcBaseURL, fmt.Sprintf("%s/v2", s.Mock.Server.URL))
	assert.Equal(s.T(), fakeOTCToken, otcProvider.token)
}

func (s *OTCDNSTestSuite) TestOTCDNSEmptyZone() {
	s.Mock.HandleListZonesEmpty()
	s.Mock.HandleListRecordsetsSuccessfully()

	otcProvider, _ := s.createDNSProvider()
	err := otcProvider.Present("example.com", "", "foobar")
	assert.NotNil(s.T(), err)
}

func (s *OTCDNSTestSuite) TestOTCDNSEmptyRecordset() {
	s.Mock.HandleListZonesSuccessfully()
	s.Mock.HandleListRecordsetsEmpty()

	otcProvider, _ := s.createDNSProvider()
	err := otcProvider.CleanUp("example.com", "", "foobar")
	assert.NotNil(s.T(), err)
}

func (s *OTCDNSTestSuite) TestOTCDNSPresent() {
	s.Mock.HandleListZonesSuccessfully()
	s.Mock.HandleListRecordsetsSuccessfully()

	otcProvider, _ := s.createDNSProvider()
	err := otcProvider.Present("example.com", "", "foobar")
	assert.Nil(s.T(), err)
}

func (s *OTCDNSTestSuite) TestOTCDNSCleanup() {
	s.Mock.HandleListZonesSuccessfully()
	s.Mock.HandleListRecordsetsSuccessfully()
	s.Mock.HandleDeleteRecordsetsSuccessfully()

	otcProvider, _ := s.createDNSProvider()
	err := otcProvider.CleanUp("example.com", "", "foobar")
	assert.Nil(s.T(), err)
}