1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
package backups
import (
"testing"
"github.com/rackspace/gophercloud/openstack/db/v1/datastores"
"github.com/rackspace/gophercloud/pagination"
th "github.com/rackspace/gophercloud/testhelper"
fake "github.com/rackspace/gophercloud/testhelper/client"
"github.com/rackspace/gophercloud/testhelper/fixture"
)
var (
backupID = "{backupID}"
_rootURL = "/backups"
resURL = _rootURL + "/" + backupID
)
func TestCreate(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
fixture.SetupHandler(t, _rootURL, "POST", createReq, createResp, 202)
opts := CreateOpts{
Name: "snapshot",
Description: "My Backup",
InstanceID: "d4603f69-ec7e-4e9b-803f-600b9205576f",
}
instance, err := Create(fake.ServiceClient(), opts).Extract()
th.AssertNoErr(t, err)
expected := &Backup{
Created: timeVal,
Description: "My Backup",
ID: "61f12fef-edb1-4561-8122-e7c00ef26a82",
InstanceID: "d4603f69-ec7e-4e9b-803f-600b9205576f",
LocationRef: "",
Name: "snapshot",
ParentID: "",
Size: 100,
Status: "NEW",
Updated: timeVal,
Datastore: datastores.DatastorePartial{
Version: "5.1",
Type: "MySQL",
VersionID: "20000000-0000-0000-0000-000000000002",
},
}
th.AssertDeepEquals(t, expected, instance)
}
func TestList(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
fixture.SetupHandler(t, _rootURL, "GET", "", listResp, 200)
pages := 0
err := List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
pages++
actual, err := ExtractBackups(page)
th.AssertNoErr(t, err)
expected := []Backup{
Backup{
Created: timeVal,
Description: "Backup from Restored Instance",
ID: "87972694-4be2-40f5-83f8-501656e0032a",
InstanceID: "29af2cd9-0674-48ab-b87a-b160f00208e6",
LocationRef: "http://localhost/path/to/backup",
Name: "restored_backup",
ParentID: "",
Size: 0.141026,
Status: "COMPLETED",
Updated: timeVal,
Datastore: datastores.DatastorePartial{
Version: "5.1",
Type: "MySQL",
VersionID: "20000000-0000-0000-0000-000000000002",
},
},
}
th.AssertDeepEquals(t, expected, actual)
return true, nil
})
th.AssertNoErr(t, err)
th.AssertEquals(t, 1, pages)
}
func TestGet(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
fixture.SetupHandler(t, resURL, "GET", "", getResp, 200)
instance, err := Get(fake.ServiceClient(), backupID).Extract()
th.AssertNoErr(t, err)
expected := &Backup{
Created: timeVal,
Description: "My Backup",
ID: "61f12fef-edb1-4561-8122-e7c00ef26a82",
InstanceID: "d4603f69-ec7e-4e9b-803f-600b9205576f",
LocationRef: "",
Name: "snapshot",
ParentID: "",
Size: 100,
Status: "NEW",
Updated: timeVal,
Datastore: datastores.DatastorePartial{
Version: "5.1",
Type: "MySQL",
VersionID: "20000000-0000-0000-0000-000000000002",
},
}
th.AssertDeepEquals(t, expected, instance)
}
func TestDelete(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
fixture.SetupHandler(t, resURL, "DELETE", "", "", 202)
err := Delete(fake.ServiceClient(), backupID).ExtractErr()
th.AssertNoErr(t, err)
}
|