File: client_test.go

package info (click to toggle)
golang-github-xenolf-lego 4.9.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,076 kB
  • sloc: xml: 533; makefile: 130; sh: 18
file content (117 lines) | stat: -rw-r--r-- 3,033 bytes parent folder | download | duplicates (3)
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
113
114
115
116
117
package internal

import (
	"testing"

	"github.com/stretchr/testify/require"
)

const (
	noopBaseURL          = "https://api.reg.ru/api/regru2/nop"
	officialTestUser     = "test"
	officialTestPassword = "test"
)

func TestRemoveRecord(t *testing.T) {
	t.Skip("Skip during Debian build (no access to the network)")
	// TODO(ldez): remove skip when the reg.ru API will be fixed.
	t.Skip("there is a bug with the reg.ru API: INTERNAL_API_ERROR: Внутренняя ошибка, status code: 503")

	client := NewClient(officialTestUser, officialTestPassword)

	err := client.RemoveTxtRecord("test.ru", "_acme-challenge", "txttxttxt")
	require.NoError(t, err)
}

func TestRemoveRecord_errors(t *testing.T) {
	t.Skip("Skip during Debian build (no access to the network)")
	testCases := []struct {
		desc     string
		domain   string
		username string
		password string
		baseURL  string
		expected string
	}{
		{
			desc:     "authentication failed",
			domain:   "test.ru",
			username: "",
			password: "",
			baseURL:  noopBaseURL,
			expected: "API error: NO_AUTH: No authorization mechanism selected",
		},
		{
			desc:     "domain error",
			domain:   "",
			username: officialTestUser,
			password: officialTestPassword,
			baseURL:  defaultBaseURL,
			expected: "API error: NO_DOMAIN: domain_name not given or empty",
		},
	}

	for _, test := range testCases {
		test := test
		t.Run(test.desc, func(t *testing.T) {
			t.Parallel()

			client := NewClient(test.username, test.username)

			err := client.RemoveTxtRecord(test.domain, "_acme-challenge", "txttxttxt")
			require.EqualError(t, err, test.expected)
		})
	}
}

func TestAddTXTRecord(t *testing.T) {
	t.Skip("Skip during Debian build (no access to the network)")
	// TODO(ldez): remove skip when the reg.ru API will be fixed.
	t.Skip("there is a bug with the reg.ru API: INTERNAL_API_ERROR: Внутренняя ошибка, status code: 503")

	client := NewClient(officialTestUser, officialTestPassword)

	err := client.AddTXTRecord("test.ru", "_acme-challenge", "txttxttxt")
	require.NoError(t, err)
}

func TestAddTXTRecord_errors(t *testing.T) {
	t.Skip("Skip during Debian build (no access to the network)")
	testCases := []struct {
		desc     string
		domain   string
		username string
		password string
		baseURL  string
		expected string
	}{
		{
			desc:     "authentication failed",
			domain:   "test.ru",
			username: "",
			password: "",
			baseURL:  noopBaseURL,
			expected: "API error: NO_AUTH: No authorization mechanism selected",
		},
		{
			desc:     "domain error",
			domain:   "",
			username: officialTestUser,
			password: officialTestPassword,
			baseURL:  defaultBaseURL,
			expected: "API error: NO_DOMAIN: domain_name not given or empty",
		},
	}

	for _, test := range testCases {
		test := test
		t.Run(test.desc, func(t *testing.T) {
			t.Parallel()

			client := NewClient(test.username, test.username)

			err := client.AddTXTRecord(test.domain, "_acme-challenge", "txttxttxt")
			require.EqualError(t, err, test.expected)
		})
	}
}