Documentation
¶
Overview ¶
zones unit tests
package testing
import (
"fmt" "net/http" "testing" "time" "github.com/gophercloud/gophercloud" "github.com/gophercloud/gophercloud/openstack/dns/v2/zones" th "github.com/gophercloud/gophercloud/testhelper" "github.com/gophercloud/gophercloud/testhelper/client"
)
// List Output is a sample response to a List call. const ListOutput = `
{
"links": {
"self": "http://example.com:9001/v2/zones"
},
"metadata": {
"total_count": 2
},
"zones": [
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 7200,
"serial": 1404757531,
"status": "ACTIVE",
"action": "CREATE",
"description": "This is an example zone.",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
},
{
"id": "34c4561c-9205-4386-9df5-167436f5a222",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "foo.example.com.",
"email": "joe@foo.example.com",
"ttl": 7200,
"serial": 1488053571,
"status": "ACTIVE",
"action": "CREATE",
"description": "This is another example zone.",
"masters": ["example.com."],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": "2015-02-25T20:23:01.234567",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/34c4561c-9205-4386-9df5-167436f5a222"
}
}
]
}
`
// GetOutput is a sample response to a Get call. const GetOutput = `
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 7200,
"serial": 1404757531,
"status": "ACTIVE",
"action": "CREATE",
"description": "This is an example zone.",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}
`
// FirstZone is the first result in ListOutput var FirstZoneCreatedAt, _ = time.Parse(gophercloud.RFC3339MilliNoZ, "2014-07-07T18:25:31.275934")
var FirstZone = zones.Zone{
ID: "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
PoolID: "572ba08c-d929-4c70-8e42-03824bb24ca2",
ProjectID: "4335d1f0-f793-11e2-b778-0800200c9a66",
Name: "example.org.",
Email: "joe@example.org",
TTL: 7200,
Serial: 1404757531,
Status: "ACTIVE",
Action: "CREATE",
Description: "This is an example zone.",
Masters: []string{},
Type: "PRIMARY",
Version: 1,
CreatedAt: FirstZoneCreatedAt,
Links: map[string]interface{}{
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
},
}
var SecondZoneCreatedAt, _ = time.Parse(gophercloud.RFC3339MilliNoZ, "2014-07-07T18:25:31.275934") var SecondZoneUpdatedAt, _ = time.Parse(gophercloud.RFC3339MilliNoZ, "2015-02-25T20:23:01.234567")
var SecondZone = zones.Zone{
ID: "34c4561c-9205-4386-9df5-167436f5a222",
PoolID: "572ba08c-d929-4c70-8e42-03824bb24ca2",
ProjectID: "4335d1f0-f793-11e2-b778-0800200c9a66",
Name: "foo.example.com.",
Email: "joe@foo.example.com",
TTL: 7200,
Serial: 1488053571,
Status: "ACTIVE",
Action: "CREATE",
Description: "This is another example zone.",
Masters: []string{"example.com."},
Type: "PRIMARY",
Version: 1,
CreatedAt: SecondZoneCreatedAt,
UpdatedAt: SecondZoneUpdatedAt,
Links: map[string]interface{}{
"self": "https://127.0.0.1:9001/v2/zones/34c4561c-9205-4386-9df5-167436f5a222",
},
}
// ExpectedZonesSlice is the slice of results that should be parsed // from ListOutput, in the expected order. var ExpectedZonesSlice = []zones.Zone{FirstZone, SecondZone}
// HandleListSuccessfully configures the test server to respond to a List request.
func HandleListSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/zones", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, ListOutput)
})
}
// HandleGetSuccessfully configures the test server to respond to a List request.
func HandleGetSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, GetOutput)
})
}
// CreateZoneRequest is a sample request to create a zone. const CreateZoneRequest = `
{
"name": "example.org.",
"email": "joe@example.org",
"type": "PRIMARY",
"ttl": 7200,
"description": "This is an example zone."
}
`
// CreateZoneResponse is a sample response to a create request. const CreateZoneResponse = `
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 7200,
"serial": 1404757531,
"status": "ACTIVE",
"action": "CREATE",
"description": "This is an example zone.",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}
`
// CreatedZone is the expected created zone var CreatedZone = FirstZone
// HandleZoneCreationSuccessfully configures the test server to respond to a Create request.
func HandleCreateSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/zones", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "POST")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
th.TestJSONRequest(t, r, CreateZoneRequest)
w.WriteHeader(http.StatusCreated)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, CreateZoneResponse)
})
}
// UpdateZoneRequest is a sample request to update a zone. const UpdateZoneRequest = `
{
"ttl": 600,
"description": "Updated Description"
}
`
// UpdateZoneResponse is a sample response to update a zone. const UpdateZoneResponse = `
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 600,
"serial": 1404757531,
"status": "PENDING",
"action": "UPDATE",
"description": "Updated Description",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}
`
// HandleZoneUpdateSuccessfully configures the test server to respond to an Update request.
func HandleUpdateSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "PATCH")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
th.TestJSONRequest(t, r, UpdateZoneRequest)
w.WriteHeader(http.StatusOK)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, UpdateZoneResponse)
})
}
// DeleteZoneResponse is a sample response to update a zone. const DeleteZoneResponse = `
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 600,
"serial": 1404757531,
"status": "PENDING",
"action": "DELETE",
"description": "Updated Description",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}
`
// HandleZoneDeleteSuccessfully configures the test server to respond to an Delete request.
func HandleDeleteSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "DELETE")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.WriteHeader(http.StatusAccepted)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, DeleteZoneResponse)
})
}
Index ¶
Constants ¶
const CreateZoneRequest = `` /* 233-byte string literal not displayed */
CreateZoneRequest is a sample request to create a zone.
const CreateZoneResponse = `` /* 742-byte string literal not displayed */
CreateZoneResponse is a sample response to a create request.
const DeleteZoneResponse = `` /* 898-byte string literal not displayed */
DeleteZoneResponse is a sample response to update a zone.
const GetOutput = `` /* 902-byte string literal not displayed */
GetOutput is a sample response to a Get call.
const ListOutput = `` /* 1672-byte string literal not displayed */
List Output is a sample response to a List call.
const UpdateZoneRequest = `
{
"ttl": 600,
"description": "Updated Description"
}
`
UpdateZoneRequest is a sample request to update a zone.
const UpdateZoneResponse = `` /* 627-byte string literal not displayed */
UpdateZoneResponse is a sample response to update a zone.
Variables ¶
var CreatedZone = zones.ZoneCreateResponse{ ID: "ff8080825b8fc86c015b94bc6f8712c3", Name: "example.com.", Email: "xx@example.com", Serial: 0, Status: "ACTIVE", Description: "This is an example zone.", Masters: []string{}, CreatedAt: "2017-04-22T08:17:08.997", UpdatedAt: "2017-04-22T08:17:09.997", TTL: 300, Links: zones.Link{ Self: "https://Endpoint/v2/zones/ff8080825b8fc86c015b94bc6f8712c3", }, PoolId: "ff8080825ab738f4015ab7513298010e", ProjectId: "e55c6f3dc4e34c9f86353b664ae0e70c", ZoneType: "private", RecordNum: 2, Router: zones.AssociateRouterResponse{ RouterId: "19664294-0bf6-4271-ad3a-94b8c79c6558", Status: "ACTIVE", RouterRegion: "xx", }, }
CreatedZone is the expected created zone
var ExpectedZonesSlice = []zones.Zone{FirstZone, SecondZone}
ExpectedZonesSlice is the slice of results that should be parsed from ListOutput, in the expected order.
var FirstZone = zones.Zone{ ID: "ff8080825b8fc86c015b94bc6f8712c3", Name: "example.com.", Email: "xx@example.com", Serial: 0, Status: "ACTIVE", Description: "This is an example zone.", Masters: []string{}, CreatedAt: "2017-04-22T08:17:08.997", UpdatedAt: "2017-04-22T08:17:09.997", TTL: 300, Links: zones.Link{ Self: "https://Endpoint/v2/zones/ff8080825b8fc86c015b94bc6f8712c3", }, PoolId: "ff8080825ab738f4015ab7513298010e", ProjectId: "e55c6f3dc4e34c9f86353b664ae0e70c", ZoneType: "private", RecordNum: 2, Routers: []zones.AssociateRouterResponse{ { RouterId: "19664294-0bf6-4271-ad3a-94b8c79c6558", Status: "ACTIVE", RouterRegion: "xx", }, { RouterId: "f0791650-db8c-4a20-8a44-a06c6e24b15b", Status: "ACTIVE", RouterRegion: "xx", }, }, }
var SecondZone = zones.Zone{ ID: "ff8080825b8fc86c015b94bc6f871223", Name: "example.com.", Email: "xx@example.com", Serial: 0, Status: "ACTIVE", Description: "This is an example zone.", Masters: []string{}, CreatedAt: "2017-04-22T08:17:08.997", UpdatedAt: "2017-04-22T08:17:09.997", TTL: 300, Links: zones.Link{ Self: "https://Endpoint/v2/zones/ff8080825b8fc86c015b94bc6f8712c3", }, PoolId: "ff8080825ab738f4015ab7513298010e", ProjectId: "e55c6f3dc4e34c9f86353b664ae0e70c", ZoneType: "private", RecordNum: 2, Routers: []zones.AssociateRouterResponse{ { RouterId: "19664294-0bf6-4271-ad3a-94b8c79c6558", Status: "ACTIVE", RouterRegion: "xx", }, { RouterId: "f0791650-db8c-4a20-8a44-a06c6e24b15b", Status: "ACTIVE", RouterRegion: "xx", }, }, }
Functions ¶
func HandleCreateSuccessfully ¶
HandleZoneCreationSuccessfully configures the test server to respond to a Create request.
func HandleDeleteSuccessfully ¶
HandleZoneDeleteSuccessfully configures the test server to respond to an Delete request.
func HandleGetSuccessfully ¶
HandleGetSuccessfully configures the test server to respond to a List request.
func HandleListSuccessfully ¶
HandleListSuccessfully configures the test server to respond to a List request.
func HandleUpdateSuccessfully ¶
HandleZoneUpdateSuccessfully configures the test server to respond to an Update request.
Types ¶
This section is empty.