github.com/jlowellwofford/u-root@v1.0.0/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  }