mirror of
				https://github.com/go-acme/lego.git
				synced 2025-10-31 16:37:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package pdns
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 	"net/url"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestDNSProvider_makeRequest(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc       string
 | |
| 		apiVersion int
 | |
| 		baseURL    string
 | |
| 		uri        string
 | |
| 		expected   string
 | |
| 	}{
 | |
| 		{
 | |
| 			desc:       "host with path",
 | |
| 			apiVersion: 1,
 | |
| 			baseURL:    "https://example.com/test",
 | |
| 			uri:        "/foo",
 | |
| 			expected:   "https://example.com/test/api/v1/foo",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "host with path + trailing slash",
 | |
| 			apiVersion: 1,
 | |
| 			baseURL:    "https://example.com/test/",
 | |
| 			uri:        "/foo",
 | |
| 			expected:   "https://example.com/test/api/v1/foo",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "no URI",
 | |
| 			apiVersion: 1,
 | |
| 			baseURL:    "https://example.com/test",
 | |
| 			uri:        "",
 | |
| 			expected:   "https://example.com/test/api/v1",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "host without path",
 | |
| 			apiVersion: 1,
 | |
| 			baseURL:    "https://example.com",
 | |
| 			uri:        "/foo",
 | |
| 			expected:   "https://example.com/api/v1/foo",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "api",
 | |
| 			apiVersion: 1,
 | |
| 			baseURL:    "https://example.com",
 | |
| 			uri:        "/api",
 | |
| 			expected:   "https://example.com/api",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "API version 0, host with path",
 | |
| 			apiVersion: 0,
 | |
| 			baseURL:    "https://example.com/test",
 | |
| 			uri:        "/foo",
 | |
| 			expected:   "https://example.com/test/foo",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "API version 0, host with path + trailing slash",
 | |
| 			apiVersion: 0,
 | |
| 			baseURL:    "https://example.com/test/",
 | |
| 			uri:        "/foo",
 | |
| 			expected:   "https://example.com/test/foo",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "API version 0, no URI",
 | |
| 			apiVersion: 0,
 | |
| 			baseURL:    "https://example.com/test",
 | |
| 			uri:        "",
 | |
| 			expected:   "https://example.com/test",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "API version 0, host without path",
 | |
| 			apiVersion: 0,
 | |
| 			baseURL:    "https://example.com",
 | |
| 			uri:        "/foo",
 | |
| 			expected:   "https://example.com/foo",
 | |
| 		},
 | |
| 		{
 | |
| 			desc:       "API version 0, api",
 | |
| 			apiVersion: 0,
 | |
| 			baseURL:    "https://example.com",
 | |
| 			uri:        "/api",
 | |
| 			expected:   "https://example.com/api",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			host, err := url.Parse(test.baseURL)
 | |
| 			require.NoError(t, err)
 | |
| 
 | |
| 			config := &Config{Host: host, APIKey: "secret"}
 | |
| 
 | |
| 			p := &DNSProvider{
 | |
| 				config:     config,
 | |
| 				apiVersion: test.apiVersion,
 | |
| 			}
 | |
| 
 | |
| 			req, err := p.makeRequest(http.MethodGet, test.uri, nil)
 | |
| 			require.NoError(t, err)
 | |
| 
 | |
| 			assert.Equal(t, test.expected, req.URL.String())
 | |
| 			assert.Equal(t, "secret", req.Header.Get("X-API-Key"))
 | |
| 		})
 | |
| 	}
 | |
| }
 |