github.com/go-chef/chef@v0.30.1/status_test.go (about) 1 package chef 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io" 7 "log" 8 "net/http" 9 "os" 10 "reflect" 11 "testing" 12 ) 13 14 var ( 15 testStatusJSON = "test/status.json" 16 ) 17 18 func TestStatusFromJSONDecoder(t *testing.T) { 19 if file, err := os.Open(testStatusJSON); err != nil { 20 t.Error("Unexpected error '", err, "' during os.Open on", testStatusJSON) 21 } else { 22 dec := json.NewDecoder(file) 23 var g Status 24 if err := dec.Decode(&g); err == io.EOF { 25 log.Fatal(g) 26 } else if err != nil { 27 log.Fatal(err) 28 } 29 } 30 } 31 32 func TestStatusGet(t *testing.T) { 33 setup() 34 defer teardown() 35 36 mux.HandleFunc("/_status", func(w http.ResponseWriter, r *http.Request) { 37 dec := json.NewDecoder(r.Body) 38 var request Status 39 dec.Decode(&request) 40 switch { 41 case r.Method == "GET": 42 fmt.Fprintf(w, `{ 43 "status": "pong", 44 "upstreams": { 45 "chef_elasticsearch": "pong", 46 "chef_sql": "pong", 47 "chef_index": "pong", 48 "oc_chef_authz": "pong", 49 "data_collector": "pong" 50 }, 51 "keygen": { 52 "keys": 10, 53 "max": 10, 54 "max_workers": 2, 55 "cur_max_workers": 2, 56 "inflight": 0, 57 "avail_workers": 2, 58 "start_size": 0 59 } 60 }`) 61 } 62 63 }) 64 65 wantStatus := Status{ 66 Status: "pong", 67 Upstreams: map[string]string{"chef_elasticsearch": "pong", "chef_index": "pong", "chef_sql": "pong", "data_collector": "pong", "oc_chef_authz": "pong"}, 68 Keygen: map[string]int{"avail_workers": 2, "cur_max_workers": 2, "inflight": 0, "keys": 10, "max": 10, "max_workers": 2, "start_size": 0}, 69 } 70 71 status, err := client.Status.Get() 72 if err != nil { 73 t.Errorf("Status.Get returned error: %s", err.Error()) 74 } 75 76 if !reflect.DeepEqual(status, wantStatus) { 77 t.Errorf("Status.Get returned %+v, want %+v, error %+v", status, wantStatus, err) 78 } 79 80 }