mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-11-10 00:10:36 +08:00
164 lines
4.1 KiB
Go
164 lines
4.1 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestUniversalSSLSettingDetails(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"enabled": true
|
|
}
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/ssl/universal/settings", handler)
|
|
|
|
want := UniversalSSLSetting{
|
|
Enabled: true,
|
|
}
|
|
|
|
got, err := client.UniversalSSLSettingDetails(context.Background(), testZoneID)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, got)
|
|
}
|
|
}
|
|
|
|
func TestEditUniversalSSLSetting(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodPatch, r.Method, "Expected method 'PATCH', got %s", r.Method)
|
|
body, err := io.ReadAll(r.Body)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer r.Body.Close()
|
|
|
|
assert.Equal(t, `{"enabled":true}`, string(body))
|
|
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"enabled": true
|
|
}
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/ssl/universal/settings", handler)
|
|
|
|
want := UniversalSSLSetting{
|
|
Enabled: true,
|
|
}
|
|
|
|
got, err := client.EditUniversalSSLSetting(context.Background(), testZoneID, want)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, got)
|
|
}
|
|
}
|
|
|
|
func TestUniversalSSLVerificationDetails(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"result": [{
|
|
"certificate_status": "active",
|
|
"verification_type": "cname",
|
|
"verification_status": true,
|
|
"verification_info": [
|
|
{
|
|
"status": "pending",
|
|
"http_url": "http://example.com/.well-known/acme-challenge/Km-ycWoOVh10cLfL4pRPppGt6jU_mGz8xgvNOxudMiA",
|
|
"http_body": "Km-ycWoOVh10cLfL4pRPppGt6jU_mGz8xgvNOxudMiA.Jckzm7Z9uOFls_MXPYibNRz6koY5a8qpI_BeHtDtf-g"
|
|
}
|
|
],
|
|
"brand_check": false,
|
|
"validation_method": "txt",
|
|
"cert_pack_uuid": "a77f8bd7-3b47-46b4-a6f1-75cf98109948"
|
|
}]
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/ssl/verification", handler)
|
|
|
|
want := []UniversalSSLVerificationDetails{
|
|
{
|
|
CertificateStatus: "active",
|
|
VerificationType: "cname",
|
|
ValidationMethod: "txt",
|
|
CertPackUUID: "a77f8bd7-3b47-46b4-a6f1-75cf98109948",
|
|
VerificationStatus: true,
|
|
BrandCheck: false,
|
|
VerificationInfo: []SSLValidationRecord{{
|
|
HTTPUrl: "http://example.com/.well-known/acme-challenge/Km-ycWoOVh10cLfL4pRPppGt6jU_mGz8xgvNOxudMiA",
|
|
HTTPBody: "Km-ycWoOVh10cLfL4pRPppGt6jU_mGz8xgvNOxudMiA.Jckzm7Z9uOFls_MXPYibNRz6koY5a8qpI_BeHtDtf-g",
|
|
}},
|
|
},
|
|
}
|
|
|
|
got, err := client.UniversalSSLVerificationDetails(context.Background(), testZoneID)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, got)
|
|
}
|
|
}
|
|
|
|
func TestUpdateSSLCertificatePackValidationMethod(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodPatch, r.Method, "Expected method 'PATCH', got %s", r.Method)
|
|
body, err := io.ReadAll(r.Body)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer r.Body.Close()
|
|
|
|
assert.Equal(t, `{"validation_method":"txt"}`, string(body))
|
|
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"validation_method": "txt",
|
|
"status": "pending_validation"
|
|
}
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/ssl/verification/"+testCertPackUUID, handler)
|
|
|
|
want := UniversalSSLCertificatePackValidationMethodSetting{
|
|
ValidationMethod: "txt",
|
|
}
|
|
|
|
got, err := client.UpdateUniversalSSLCertificatePackValidationMethod(context.Background(), testZoneID, testCertPackUUID, want)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, got)
|
|
}
|
|
}
|