140 lines
3.0 KiB
Go
140 lines
3.0 KiB
Go
package chef
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
//"os"
|
|
"testing"
|
|
)
|
|
|
|
const cookbookListResponseFile = "test/cookbooks_response.json"
|
|
const cookbookTestFile = "test/cookbook.json"
|
|
|
|
func TestCookbookList(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
file, err := ioutil.ReadFile(cookbookListResponseFile)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
mux.HandleFunc("/cookbooks", func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintf(w, string(file))
|
|
})
|
|
|
|
data, err := client.Cookbooks.List()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if data == nil {
|
|
t.Fatal("WTF we should have some data")
|
|
}
|
|
fmt.Println(data)
|
|
|
|
_, err = client.Cookbooks.ListAvailableVersions("3")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
_, err = client.Cookbooks.ListAvailableVersions("0")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestCookbookListAvailableVersions_0(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
mux.HandleFunc("/cookbooks", func(w http.ResponseWriter, r *http.Request) {
|
|
http.Error(w, "BAD FUCKING REQUEST", 503)
|
|
})
|
|
|
|
_, err := client.Cookbooks.ListAvailableVersions("2")
|
|
if err == nil {
|
|
t.Error("We expected this bad request to error", err)
|
|
}
|
|
}
|
|
|
|
func TestCookBookDelete(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
mux.HandleFunc("/cookbooks/good", func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintf(w, "")
|
|
})
|
|
mux.HandleFunc("/cookbooks/bad", func(w http.ResponseWriter, r *http.Request) {
|
|
http.Error(w, "Not Found", 404)
|
|
})
|
|
|
|
err := client.Cookbooks.Delete("bad", "1.1.1")
|
|
if err == nil {
|
|
t.Error("We expected this bad request to error", err)
|
|
}
|
|
|
|
err = client.Cookbooks.Delete("good", "1.1.1")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestCookBookGet(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
cookbookVerionJSON := `{"url": "http://localhost:4000/cookbooks/apache2/5.1.0", "version": "5.1.0"}`
|
|
mux.HandleFunc("/cookbooks/good", func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintf(w, cookbookVerionJSON)
|
|
})
|
|
mux.HandleFunc("/cookbooks/bad", func(w http.ResponseWriter, r *http.Request) {
|
|
http.Error(w, "Not Found", 404)
|
|
})
|
|
|
|
data, err := client.Cookbooks.Get("good")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if data.Version != "5.1.0" {
|
|
t.Errorf("We expected '5.1.0' and got '%s'\n", data.Version)
|
|
}
|
|
|
|
_, err = client.Cookbooks.Get("bad")
|
|
if err == nil {
|
|
t.Error("We expected this bad request to error", err)
|
|
}
|
|
}
|
|
|
|
func TestCookBookGetAvailableVersions(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
cookbookVerionsJSON := `
|
|
{ "apache2": {
|
|
"url": "http://localhost:4000/cookbooks/apache2",
|
|
"versions": [
|
|
{"url": "http://localhost:4000/cookbooks/apache2/5.1.0",
|
|
"version": "5.1.0"},
|
|
{"url": "http://localhost:4000/cookbooks/apache2/4.2.0",
|
|
"version": "4.2.0"}
|
|
]
|
|
}}`
|
|
|
|
mux.HandleFunc("/cookbooks/good", func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintf(w, cookbookVerionsJSON)
|
|
})
|
|
mux.HandleFunc("/cookbooks/bad", func(w http.ResponseWriter, r *http.Request) {
|
|
http.Error(w, "Not Found", 404)
|
|
})
|
|
|
|
data, err := client.Cookbooks.GetAvailableVersions("good", "3")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
fmt.Println(data)
|
|
|
|
}
|