diff options
author | Christopher Speller <crspeller@gmail.com> | 2017-08-17 17:19:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-17 17:19:06 -0700 |
commit | 96eab1202717e073782ec399a4e0820cae15b1bb (patch) | |
tree | 011012982be971c7e9ef91466f026bc0956ac9a2 /vendor/github.com/xenolf/lego/providers/dns/otc/mock.go | |
parent | 2c895ee66eed626721135acfcc48254c6e3f3b29 (diff) | |
download | chat-96eab1202717e073782ec399a4e0820cae15b1bb.tar.gz chat-96eab1202717e073782ec399a4e0820cae15b1bb.tar.bz2 chat-96eab1202717e073782ec399a4e0820cae15b1bb.zip |
Updating server dependancies. (#7246)
Diffstat (limited to 'vendor/github.com/xenolf/lego/providers/dns/otc/mock.go')
-rw-r--r-- | vendor/github.com/xenolf/lego/providers/dns/otc/mock.go | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/vendor/github.com/xenolf/lego/providers/dns/otc/mock.go b/vendor/github.com/xenolf/lego/providers/dns/otc/mock.go new file mode 100644 index 000000000..0f2acb4b4 --- /dev/null +++ b/vendor/github.com/xenolf/lego/providers/dns/otc/mock.go @@ -0,0 +1,152 @@ +package otc + +import ( + "fmt" + "github.com/stretchr/testify/assert" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" +) + +var fakeOTCUserName = "test" +var fakeOTCPassword = "test" +var fakeOTCDomainName = "test" +var fakeOTCProjectName = "test" +var fakeOTCToken = "62244bc21da68d03ebac94e6636ff01f" + +type DNSMock struct { + t *testing.T + Server *httptest.Server + Mux *http.ServeMux +} + +func NewDNSMock(t *testing.T) *DNSMock { + return &DNSMock{ + t: t, + } +} + +// Setup creates the mock server +func (m *DNSMock) Setup() { + m.Mux = http.NewServeMux() + m.Server = httptest.NewServer(m.Mux) +} + +// ShutdownServer creates the mock server +func (m *DNSMock) ShutdownServer() { + m.Server.Close() +} + +func (m *DNSMock) HandleAuthSuccessfully() { + m.Mux.HandleFunc("/v3/auth/token", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("X-Subject-Token", fakeOTCToken) + + fmt.Fprintf(w, `{ + "token": { + "catalog": [ + { + "type": "dns", + "id": "56cd81db1f8445d98652479afe07c5ba", + "name": "", + "endpoints": [ + { + "url": "%s", + "region": "eu-de", + "region_id": "eu-de", + "interface": "public", + "id": "0047a06690484d86afe04877074efddf" + } + ] + } + ] + }}`, m.Server.URL) + }) +} + +func (m *DNSMock) HandleListZonesSuccessfully() { + m.Mux.HandleFunc("/v2/zones", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, `{ + "zones":[{ + "id":"123123" + }]} + `) + + assert.Equal(m.t, r.Method, "GET") + assert.Equal(m.t, r.URL.Path, "/v2/zones") + assert.Equal(m.t, r.URL.RawQuery, "name=example.com.") + assert.Equal(m.t, r.Header.Get("Content-Type"), "application/json") + }) +} + +func (m *DNSMock) HandleListZonesEmpty() { + m.Mux.HandleFunc("/v2/zones", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, `{ + "zones":[ + ]} + `) + + assert.Equal(m.t, r.Method, "GET") + assert.Equal(m.t, r.URL.Path, "/v2/zones") + assert.Equal(m.t, r.URL.RawQuery, "name=example.com.") + assert.Equal(m.t, r.Header.Get("Content-Type"), "application/json") + }) +} + +func (m *DNSMock) HandleDeleteRecordsetsSuccessfully() { + m.Mux.HandleFunc("/v2/zones/123123/recordsets/321321", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, `{ + "zones":[{ + "id":"123123" + }]} + `) + + assert.Equal(m.t, r.Method, "DELETE") + assert.Equal(m.t, r.URL.Path, "/v2/zones/123123/recordsets/321321") + assert.Equal(m.t, r.Header.Get("Content-Type"), "application/json") + }) +} + +func (m *DNSMock) HandleListRecordsetsEmpty() { + m.Mux.HandleFunc("/v2/zones/123123/recordsets", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, `{ + "recordsets":[ + ]} + `) + + assert.Equal(m.t, r.URL.Path, "/v2/zones/123123/recordsets") + assert.Equal(m.t, r.URL.RawQuery, "type=TXT&name=_acme-challenge.example.com.") + }) +} +func (m *DNSMock) HandleListRecordsetsSuccessfully() { + m.Mux.HandleFunc("/v2/zones/123123/recordsets", func(w http.ResponseWriter, r *http.Request) { + if r.Method == "GET" { + fmt.Fprintf(w, `{ + "recordsets":[{ + "id":"321321" + }]} + `) + + assert.Equal(m.t, r.URL.Path, "/v2/zones/123123/recordsets") + assert.Equal(m.t, r.URL.RawQuery, "type=TXT&name=_acme-challenge.example.com.") + + } else if r.Method == "POST" { + body, err := ioutil.ReadAll(r.Body) + + assert.Nil(m.t, err) + exceptedString := "{\"name\":\"_acme-challenge.example.com.\",\"description\":\"Added TXT record for ACME dns-01 challenge using lego client\",\"type\":\"TXT\",\"ttl\":300,\"records\":[\"\\\"w6uP8Tcg6K2QR905Rms8iXTlksL6OD1KOWBxTK7wxPI\\\"\"]}" + assert.Equal(m.t, string(body), exceptedString) + + fmt.Fprintf(w, `{ + "recordsets":[{ + "id":"321321" + }]} + `) + + } else { + m.t.Errorf("Expected method to be 'GET' or 'POST' but got '%s'", r.Method) + } + + assert.Equal(m.t, r.Header.Get("Content-Type"), "application/json") + }) +} |