gopkg.in/hugelgupf/u-root.v2@v2.0.0-20180831055005-3f8fdb0ce09d/pkg/sos/serviceFuncs_test.go (about) 1 // Copyright 2018 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package sos 6 7 import ( 8 "fmt" 9 "io/ioutil" 10 "net/http" 11 "net/http/httptest" 12 "reflect" 13 "testing" 14 15 "github.com/gorilla/mux" 16 ) 17 18 func TestRegistersNecessaryPatterns(t *testing.T) { 19 router := mux.NewRouter() 20 RegistersNecessaryPatterns(router) 21 ts := httptest.NewServer(router) 22 defer ts.Close() 23 24 res, err := http.Get(ts.URL + "/ping") 25 if err != nil { 26 t.Errorf("error: %v", err) 27 return 28 } 29 30 if res.StatusCode != http.StatusOK { 31 t.Errorf("Status Code\ngot:%v\nwant:%v", res.StatusCode, http.StatusOK) 32 return 33 } 34 35 msg, err := ioutil.ReadAll(res.Body) 36 res.Body.Close() 37 if err != nil { 38 t.Errorf("error: %v", err) 39 return 40 } 41 42 if string(msg) != "pong" { 43 t.Errorf("Body\ngot:%v\nwant:%v", string(msg), "pong") 44 } 45 } 46 47 func TestRegisterServiceWithSosSuccess(t *testing.T) { 48 // Set up 49 service := NewSosService() 50 server := SosServer{service} 51 r := server.buildRouter() 52 ts := httptest.NewServer(r) 53 defer ts.Close() 54 55 if err := registerServiceWithSos(knownServ1.service, knownServ1.port, ts.URL); err != nil { 56 t.Errorf("error: %v", err) 57 return 58 } 59 60 if service.registry[knownServ1.service] != knownServ1.port { 61 t.Errorf("In Registry\ngot:%v\nwant:%v", service.registry[knownServ1.service], knownServ1.port) 62 } 63 } 64 65 func TestRegisterServiceWithSosFail(t *testing.T) { 66 // Set up 67 service := setUpKnownServices() 68 server := SosServer{service} 69 r := server.buildRouter() 70 ts := httptest.NewServer(r) 71 defer ts.Close() 72 73 err := registerServiceWithSos(knownServ1.service, knownServ1.port, ts.URL) 74 if !reflect.DeepEqual(err, fmt.Errorf("%v already exists", knownServ1.service)) { 75 t.Errorf("\ngot:%v\nwant:%v", err, fmt.Errorf("%v already exists", knownServ1.service)) 76 } 77 } 78 79 func TestUnregisterServiceWithSosSuccess(t *testing.T) { 80 // Set up 81 service := setUpKnownServices() 82 server := SosServer{service} 83 r := server.buildRouter() 84 ts := httptest.NewServer(r) 85 defer ts.Close() 86 87 if err := unregisterServiceWithSos(knownServ1.service, ts.URL); err != nil { 88 t.Errorf("error: %v", err) 89 return 90 } 91 92 if _, err := service.Read(knownServ1.service); !reflect.DeepEqual(err, fmt.Errorf("%v is not in the registry", knownServ1.service)) { 93 t.Errorf("unregister(%v)\ngot:(%v)\nwant:(%v)", knownServ1.service, err, fmt.Errorf("%v is not in the registry", knownServ1.service)) 94 } 95 96 }