blob: 47f7e0600754fce35b5b637c510dd192ddc9c8af [file] [log] [blame]
package v2
import (
"encoding/json"
"testing"
)
func TestIsExtensionAvailable(t *testing.T) {
// Make a response as we'd expect from the IdentityService.GetExtensions() call.
getExtensionsResults := make(map[string]interface{})
err := json.Unmarshal([]byte(queryResults), &getExtensionsResults)
if err != nil {
t.Error(err)
return
}
e := ExtensionsResult(getExtensionsResults)
for _, alias := range []string{"OS-KSADM", "OS-FEDERATION"} {
if !e.IsExtensionAvailable(alias) {
t.Errorf("Expected extension %s present.", alias)
return
}
}
if e.IsExtensionAvailable("blort") {
t.Errorf("Input JSON doesn't list blort as an extension")
return
}
}
func TestGetExtensionDetails(t *testing.T) {
// Make a response as we'd expect from the IdentityService.GetExtensions() call.
getExtensionsResults := make(map[string]interface{})
err := json.Unmarshal([]byte(queryResults), &getExtensionsResults)
if err != nil {
t.Error(err)
return
}
e := ExtensionsResult(getExtensionsResults)
ed, err := e.ExtensionDetailsByAlias("OS-KSADM")
if err != nil {
t.Error(err)
return
}
actuals := map[string]string{
"name": ed.Name,
"namespace": ed.Namespace,
"updated": ed.Updated,
"description": ed.Description,
}
expecteds := map[string]string{
"name": "OpenStack Keystone Admin",
"namespace": "http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0",
"updated": "2013-07-11T17:14:00-00:00",
"description": "OpenStack extensions to Keystone v2.0 API enabling Administrative Operations.",
}
for k, v := range expecteds {
if actuals[k] != v {
t.Errorf("Expected %s \"%s\", got \"%s\" instead", k, v, actuals[k])
return
}
}
}
func TestMalformedResponses(t *testing.T) {
getExtensionsResults := make(map[string]interface{})
err := json.Unmarshal([]byte(bogusExtensionsResults), &getExtensionsResults)
if err != nil {
t.Error(err)
return
}
e := ExtensionsResult(getExtensionsResults)
_, err = e.ExtensionDetailsByAlias("OS-KSADM")
if err == nil {
t.Error("Expected ErrNotImplemented at least")
return
}
if err != ErrNotImplemented {
t.Error("Expected ErrNotImplemented")
return
}
if e.IsExtensionAvailable("anything at all") {
t.Error("No extensions are available with a bogus result.")
return
}
}
func TestAliases(t *testing.T) {
getExtensionsResults := make(map[string]interface{})
err := json.Unmarshal([]byte(queryResults), &getExtensionsResults)
if err != nil {
t.Error(err)
return
}
e := ExtensionsResult(getExtensionsResults)
aliases, err := e.Aliases()
if err != nil {
t.Error(err)
return
}
extensions := (((e["extensions"]).(map[string]interface{}))["values"]).([]interface{})
if len(aliases) != len(extensions) {
t.Error("Expected one alias name per extension")
return
}
}