159 lines
4.3 KiB
Go
159 lines
4.3 KiB
Go
|
package chef
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
_ "github.com/davecgh/go-spew/spew"
|
||
|
"io"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
testEnvironmentJSON = "test/environment.json"
|
||
|
)
|
||
|
|
||
|
// BUG(fujin): re-do with goconvey
|
||
|
func TestEnvironmentFromJSONDecoder(t *testing.T) {
|
||
|
if file, err := os.Open(testEnvironmentJSON); err != nil {
|
||
|
t.Error("unexpected error", err, "during os.Open on", testEnvironmentJSON)
|
||
|
} else {
|
||
|
dec := json.NewDecoder(file)
|
||
|
var e Environment
|
||
|
if err := dec.Decode(&e); err == io.EOF {
|
||
|
log.Println(e)
|
||
|
} else if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnvironmentsService_List(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
|
||
|
mux.HandleFunc("/environments", func(w http.ResponseWriter, r *http.Request) {
|
||
|
fmt.Fprintf(w, `{"_default":"blah", "development":"blah"}`)
|
||
|
})
|
||
|
|
||
|
environments, err := client.Environments.List()
|
||
|
if err != nil {
|
||
|
t.Errorf("Environments.List returned error: %v", err)
|
||
|
}
|
||
|
|
||
|
want := &EnvironmentResult{"_default": "blah", "development": "blah"}
|
||
|
if !reflect.DeepEqual(environments, want) {
|
||
|
//spew.Dump(environments)
|
||
|
//spew.Dump(want)
|
||
|
t.Errorf("Environments.List returned %+v, want %+v", environments, want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnvironmentsService_Get(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
|
||
|
mux.HandleFunc("/environments/testenvironment", func(w http.ResponseWriter, r *http.Request) {
|
||
|
fmt.Fprintf(w, `{
|
||
|
"name": "testenvironment",
|
||
|
"json_class": "Chef::Environment",
|
||
|
"chef_type": "environment"
|
||
|
}`)
|
||
|
})
|
||
|
|
||
|
environments, err := client.Environments.Get("testenvironment")
|
||
|
if err != nil {
|
||
|
t.Errorf("Environments.Get returned error: %v", err)
|
||
|
}
|
||
|
|
||
|
want := &Environment{
|
||
|
Name: "testenvironment",
|
||
|
JsonClass: "Chef::Environment",
|
||
|
ChefType: "environment",
|
||
|
}
|
||
|
|
||
|
if !reflect.DeepEqual(environments, want) {
|
||
|
t.Errorf("Environments.Get returned %+v, want %+v", environments, want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnvironmentsService_Create(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
|
||
|
mux.HandleFunc("/environments", func(w http.ResponseWriter, r *http.Request) {
|
||
|
fmt.Fprintf(w, `{ "uri": "http://localhost:4000/environments/dev" }`)
|
||
|
})
|
||
|
|
||
|
role := &Environment{
|
||
|
Name: "dev",
|
||
|
ChefType: "environment",
|
||
|
JsonClass: "Chef::Environment",
|
||
|
Attributes: "",
|
||
|
Description: "",
|
||
|
CookbookVersions: map[string]string{},
|
||
|
}
|
||
|
|
||
|
uri, err := client.Environments.Create(role)
|
||
|
if err != nil {
|
||
|
t.Errorf("Environments.Create returned error: %v", err)
|
||
|
}
|
||
|
|
||
|
want := &EnvironmentResult{"uri": "http://localhost:4000/environments/dev"}
|
||
|
|
||
|
if !reflect.DeepEqual(uri, want) {
|
||
|
t.Errorf("Environments.Create returned %+v, want %+v", uri, want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnvironmentsService_Put(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
|
||
|
mux.HandleFunc("/environments/dev", func(w http.ResponseWriter, r *http.Request) {
|
||
|
fmt.Fprintf(w, `{
|
||
|
"name": "dev",
|
||
|
"json_class": "Chef::Environment",
|
||
|
"description": "The Dev Environment",
|
||
|
"cookbook_versions": {},
|
||
|
"chef_type": "environment"
|
||
|
}`)
|
||
|
})
|
||
|
|
||
|
environment := &Environment{
|
||
|
Name: "dev",
|
||
|
ChefType: "environment",
|
||
|
JsonClass: "Chef::Environment",
|
||
|
Description: "The Dev Environment",
|
||
|
CookbookVersions: map[string]string{},
|
||
|
}
|
||
|
|
||
|
updatedEnvironment, err := client.Environments.Put(environment)
|
||
|
if err != nil {
|
||
|
t.Errorf("Environments.Put returned error: %v", err)
|
||
|
}
|
||
|
|
||
|
if !reflect.DeepEqual(updatedEnvironment, environment) {
|
||
|
t.Errorf("Environments.Put returned %+v, want %+v", updatedEnvironment, environment)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnvironmentsService_EnvironmentListResultString(t *testing.T) {
|
||
|
e := &EnvironmentResult{"_default": "https://api.opscode.com/organizations/org_name/environments/_default", "webserver": "https://api.opscode.com/organizations/org_name/environments/webserver"}
|
||
|
want := "_default => https://api.opscode.com/organizations/org_name/environments/_default\nwebserver => https://api.opscode.com/organizations/org_name/environments/webserver\n"
|
||
|
if e.String() != want {
|
||
|
t.Errorf("EnvironmentResult.String returned:\n%+v\nwant:\n%+v\n", e.String(), want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnvironmentsService_EnvironmentCreateResultString(t *testing.T) {
|
||
|
e := &EnvironmentResult{"uri": "http://localhost:4000/environments/dev"}
|
||
|
want := "uri => http://localhost:4000/environments/dev\n"
|
||
|
if e.String() != want {
|
||
|
t.Errorf("EnvironmentResult.String returned %+v, want %+v", e.String(), want)
|
||
|
}
|
||
|
}
|