pdns: reconstruct zone URLs to enable non-root folder API endpoints (#2141)
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
This commit is contained in:
parent
f89e257694
commit
5eb87685e2
2 changed files with 54 additions and 2 deletions
|
@ -117,7 +117,7 @@ func (c *Client) GetHostedZone(ctx context.Context, authZone string) (*HostedZon
|
|||
}
|
||||
|
||||
func (c *Client) UpdateRecords(ctx context.Context, zone *HostedZone, sets RRSets) error {
|
||||
endpoint := c.joinPath("/", zone.URL)
|
||||
endpoint := c.joinPath("/", "servers", c.serverName, "zones", zone.ID)
|
||||
|
||||
req, err := newJSONRequest(ctx, http.MethodPatch, endpoint, sets)
|
||||
if err != nil {
|
||||
|
@ -137,7 +137,7 @@ func (c *Client) Notify(ctx context.Context, zone *HostedZone) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
endpoint := c.joinPath("/", zone.URL, "/notify")
|
||||
endpoint := c.joinPath("/", "servers", c.serverName, "zones", zone.ID, "notify")
|
||||
|
||||
req, err := newJSONRequest(ctx, http.MethodPut, endpoint, nil)
|
||||
if err != nil {
|
||||
|
|
|
@ -256,6 +256,7 @@ func TestClient_GetHostedZone_v0(t *testing.T) {
|
|||
func TestClient_UpdateRecords(t *testing.T) {
|
||||
client := setupTest(t, http.MethodPatch, "/api/v1/servers/localhost/zones/example.org.", http.StatusOK, "zone.json")
|
||||
client.apiVersion = 1
|
||||
client.serverName = "localhost"
|
||||
|
||||
zone := &HostedZone{
|
||||
ID: "example.org.",
|
||||
|
@ -282,9 +283,41 @@ func TestClient_UpdateRecords(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestClient_UpdateRecords_NonRootApi(t *testing.T) {
|
||||
client := setupTest(t, http.MethodPatch, "/some/path/api/v1/servers/localhost/zones/example.org.", http.StatusOK, "zone.json")
|
||||
client.Host = client.Host.JoinPath("some", "path")
|
||||
client.apiVersion = 1
|
||||
client.serverName = "localhost"
|
||||
|
||||
zone := &HostedZone{
|
||||
ID: "example.org.",
|
||||
Name: "example.org.",
|
||||
URL: "some/path/api/v1/servers/server/zones/example.org.",
|
||||
Kind: "Master",
|
||||
}
|
||||
|
||||
rrSets := RRSets{
|
||||
RRSets: []RRSet{{
|
||||
Name: "example.org.",
|
||||
Type: "NS",
|
||||
ChangeType: "REPLACE",
|
||||
Records: []Record{{
|
||||
Content: "192.0.2.5",
|
||||
Name: "ns1.example.org.",
|
||||
TTL: 86400,
|
||||
Type: "A",
|
||||
}},
|
||||
}},
|
||||
}
|
||||
|
||||
err := client.UpdateRecords(context.Background(), zone, rrSets)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestClient_UpdateRecords_v0(t *testing.T) {
|
||||
client := setupTest(t, http.MethodPatch, "/servers/localhost/zones/example.org.", http.StatusOK, "zone.json")
|
||||
client.apiVersion = 0
|
||||
client.serverName = "localhost"
|
||||
|
||||
zone := &HostedZone{
|
||||
ID: "example.org.",
|
||||
|
@ -314,6 +347,7 @@ func TestClient_UpdateRecords_v0(t *testing.T) {
|
|||
func TestClient_Notify(t *testing.T) {
|
||||
client := setupTest(t, http.MethodPut, "/api/v1/servers/localhost/zones/example.org./notify", http.StatusOK, "")
|
||||
client.apiVersion = 1
|
||||
client.serverName = "localhost"
|
||||
|
||||
zone := &HostedZone{
|
||||
ID: "example.org.",
|
||||
|
@ -326,8 +360,26 @@ func TestClient_Notify(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestClient_Notify_NonRootApi(t *testing.T) {
|
||||
client := setupTest(t, http.MethodPut, "/some/path/api/v1/servers/localhost/zones/example.org./notify", http.StatusOK, "")
|
||||
client.Host = client.Host.JoinPath("some", "path")
|
||||
client.apiVersion = 1
|
||||
client.serverName = "localhost"
|
||||
|
||||
zone := &HostedZone{
|
||||
ID: "example.org.",
|
||||
Name: "example.org.",
|
||||
URL: "/some/path/api/v1/servers/server/zones/example.org.",
|
||||
Kind: "Master",
|
||||
}
|
||||
|
||||
err := client.Notify(context.Background(), zone)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestClient_Notify_v0(t *testing.T) {
|
||||
client := setupTest(t, http.MethodPut, "/api/v1/servers/localhost/zones/example.org./notify", http.StatusOK, "")
|
||||
client.apiVersion = 0
|
||||
|
||||
zone := &HostedZone{
|
||||
ID: "example.org.",
|
||||
|
|
Loading…
Reference in a new issue