blob: a410af9d8981e2b19f088d98893cfadc311b3121 [file] [log] [blame]
package testing
import (
"fmt"
"net/http"
"testing"
"gerrit.mcp.mirantis.net/debian/gophercloud.git"
"gerrit.mcp.mirantis.net/debian/gophercloud.git/openstack/blockstorage/extensions/quotasets"
th "gerrit.mcp.mirantis.net/debian/gophercloud.git/testhelper"
"gerrit.mcp.mirantis.net/debian/gophercloud.git/testhelper/client"
)
const FirstTenantID = "555544443333222211110000ffffeeee"
var getExpectedJSONBody = `
{
"quota_set" : {
"volumes" : 8,
"snapshots" : 9,
"gigabytes" : 10,
"per_volume_gigabytes" : 11,
"backups" : 12,
"backup_gigabytes" : 13,
"groups": 14
}
}`
var getExpectedQuotaSet = quotasets.QuotaSet{
Volumes: 8,
Snapshots: 9,
Gigabytes: 10,
PerVolumeGigabytes: 11,
Backups: 12,
BackupGigabytes: 13,
Groups: 14,
}
var getUsageExpectedJSONBody = `
{
"quota_set" : {
"id": "555544443333222211110000ffffeeee",
"volumes" : {
"in_use": 15,
"limit": 16,
"reserved": 17
},
"snapshots" : {
"in_use": 18,
"limit": 19,
"reserved": 20
},
"gigabytes" : {
"in_use": 21,
"limit": 22,
"reserved": 23
},
"per_volume_gigabytes" : {
"in_use": 24,
"limit": 25,
"reserved": 26
},
"backups" : {
"in_use": 27,
"limit": 28,
"reserved": 29
},
"backup_gigabytes" : {
"in_use": 30,
"limit": 31,
"reserved": 32
},
"groups" : {
"in_use": 40,
"limit": 41,
"reserved": 42
}
}
}`
var getUsageExpectedQuotaSet = quotasets.QuotaUsageSet{
ID: FirstTenantID,
Volumes: quotasets.QuotaUsage{InUse: 15, Limit: 16, Reserved: 17},
Snapshots: quotasets.QuotaUsage{InUse: 18, Limit: 19, Reserved: 20},
Gigabytes: quotasets.QuotaUsage{InUse: 21, Limit: 22, Reserved: 23},
PerVolumeGigabytes: quotasets.QuotaUsage{InUse: 24, Limit: 25, Reserved: 26},
Backups: quotasets.QuotaUsage{InUse: 27, Limit: 28, Reserved: 29},
BackupGigabytes: quotasets.QuotaUsage{InUse: 30, Limit: 31, Reserved: 32},
Groups: quotasets.QuotaUsage{InUse: 40, Limit: 41, Reserved: 42},
}
var fullUpdateExpectedJSONBody = `
{
"quota_set": {
"volumes": 8,
"snapshots": 9,
"gigabytes": 10,
"per_volume_gigabytes": 11,
"backups": 12,
"backup_gigabytes": 13,
"groups": 14
}
}`
var fullUpdateOpts = quotasets.UpdateOpts{
Volumes: gophercloud.IntToPointer(8),
Snapshots: gophercloud.IntToPointer(9),
Gigabytes: gophercloud.IntToPointer(10),
PerVolumeGigabytes: gophercloud.IntToPointer(11),
Backups: gophercloud.IntToPointer(12),
BackupGigabytes: gophercloud.IntToPointer(13),
Groups: gophercloud.IntToPointer(14),
}
var fullUpdateExpectedQuotaSet = quotasets.QuotaSet{
Volumes: 8,
Snapshots: 9,
Gigabytes: 10,
PerVolumeGigabytes: 11,
Backups: 12,
BackupGigabytes: 13,
Groups: 14,
}
var partialUpdateExpectedJSONBody = `
{
"quota_set": {
"volumes": 200,
"snapshots": 0,
"gigabytes": 0,
"per_volume_gigabytes": 0,
"backups": 0,
"backup_gigabytes": 0
}
}`
var partialUpdateOpts = quotasets.UpdateOpts{
Volumes: gophercloud.IntToPointer(200),
Snapshots: gophercloud.IntToPointer(0),
Gigabytes: gophercloud.IntToPointer(0),
PerVolumeGigabytes: gophercloud.IntToPointer(0),
Backups: gophercloud.IntToPointer(0),
BackupGigabytes: gophercloud.IntToPointer(0),
}
var partiualUpdateExpectedQuotaSet = quotasets.QuotaSet{Volumes: 200}
// HandleSuccessfulRequest configures the test server to respond to an HTTP request.
func HandleSuccessfulRequest(t *testing.T, httpMethod, uriPath, jsonOutput string, uriQueryParams map[string]string) {
th.Mux.HandleFunc(uriPath, func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, httpMethod)
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.Header().Add("Content-Type", "application/json")
if uriQueryParams != nil {
th.TestFormValues(t, r, uriQueryParams)
}
fmt.Fprintf(w, jsonOutput)
})
}
// HandleDeleteSuccessfully tests quotaset deletion.
func HandleDeleteSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/os-quota-sets/"+FirstTenantID, func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "DELETE")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.WriteHeader(http.StatusOK)
})
}