From bd029a523d39abb30d09691b2e91d457f9fce48f Mon Sep 17 00:00:00 2001 From: Eric Bissonnette Date: Tue, 17 Dec 2024 09:01:46 -0500 Subject: [PATCH] bugfix: certificate_authorities: add mtls_certificate_id to query params --- certificate_authorities.go | 24 ++++++++++++++---------- certificate_authorities_test.go | 13 +++++++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/certificate_authorities.go b/certificate_authorities.go index b9cffb2ab61..8e88e03046a 100644 --- a/certificate_authorities.go +++ b/certificate_authorities.go @@ -17,6 +17,11 @@ type UpdateCertificateAuthoritiesHostnameAssociationsParams struct { MTLSCertificateID string `json:"mtls_certificate_id,omitempty"` } +type HostnameAssociationsUpdateRequest struct { + Hostnames []HostnameAssociation `json:"hostnames,omitempty"` + MTLSCertificateID string `json:"mtls_certificate_id,omitempty"` +} + type HostnameAssociationsResponse struct { Response Result []HostnameAssociation `json:"result"` @@ -28,12 +33,11 @@ type HostnameAssociation = string // // API Reference: https://developers.cloudflare.com/api/resources/certificate_authorities/subresources/hostname_associations/methods/get/ func (api *API) ListCertificateAuthoritiesHostnameAssociations(ctx context.Context, rc *ResourceContainer, params ListCertificateAuthoritiesHostnameAssociationsParams) ([]HostnameAssociation, error) { + if rc.Level != ZoneRouteLevel { + return []HostnameAssociation{}, ErrRequiredZoneLevelResourceContainer + } - uri := fmt.Sprintf( - "/%s/%s/certificate_authorities/hostname_associations", - rc.Level, - rc.Identifier, - ) + uri := buildURI(fmt.Sprintf("/zones/%s/certificate_authorities/hostname_associations", rc.Identifier), params) res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil) if err != nil { @@ -53,11 +57,11 @@ func (api *API) ListCertificateAuthoritiesHostnameAssociations(ctx context.Conte // // API Reference: https://developers.cloudflare.com/api/resources/certificate_authorities/subresources/hostname_associations/methods/update/ func (api *API) UpdateCertificateAuthoritiesHostnameAssociations(ctx context.Context, rc *ResourceContainer, params UpdateCertificateAuthoritiesHostnameAssociationsParams) ([]HostnameAssociation, error) { - uri := fmt.Sprintf( - "/%s/%s/certificate_authorities/hostname_associations", - rc.Level, - rc.Identifier, - ) + if rc.Level != ZoneRouteLevel { + return []HostnameAssociation{}, ErrRequiredZoneLevelResourceContainer + } + + uri := fmt.Sprintf("/zones/%s/certificate_authorities/hostname_associations", rc.Identifier) res, err := api.makeRequestContext(ctx, http.MethodPut, uri, params) if err != nil { diff --git a/certificate_authorities_test.go b/certificate_authorities_test.go index 940524a5b7b..4cb88477075 100644 --- a/certificate_authorities_test.go +++ b/certificate_authorities_test.go @@ -6,6 +6,7 @@ import ( "net/http" "testing" + "github.com/goccy/go-json" "github.com/stretchr/testify/assert" ) @@ -15,6 +16,7 @@ func TestListCertificateAuthoritiesHostnameAssociations(t *testing.T) { handler := func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method) + assert.Equal(t, "72ef4d06-4752-4493-a60a-7421470fd585", r.URL.Query().Get("mtls_certificate_id")) w.Header().Set("content-type", "application/json") fmt.Fprintf(w, `{ "success": true, @@ -51,6 +53,16 @@ func TestUpdateCertificateAuthoritiesHostnameAssociations(t *testing.T) { handler := func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, http.MethodPut, r.Method, "Expected method 'PUT', got %s", r.Method) + + wantReqHostnames := []HostnameAssociation{ + "admin.example.com", + "foobar.example.com", + } + var req HostnameAssociationsUpdateRequest + assert.NoError(t, json.NewDecoder(r.Body).Decode(&req)) + assert.Equal(t, "72ef4d06-4752-4493-a60a-7421470fd585", req.MTLSCertificateID) + assert.Equal(t, wantReqHostnames, req.Hostnames) + w.Header().Set("content-type", "application/json") fmt.Fprintf(w, `{ "success": true, @@ -64,6 +76,7 @@ func TestUpdateCertificateAuthoritiesHostnameAssociations(t *testing.T) { } hostnameAssociations := UpdateCertificateAuthoritiesHostnameAssociationsParams{ + MTLSCertificateID: "72ef4d06-4752-4493-a60a-7421470fd585", Hostnames: []HostnameAssociation{ "admin.example.com", "foobar.example.com",