http_server_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package server
  2. import (
  3. "crypto/tls"
  4. "io/ioutil"
  5. "net/http"
  6. "testing"
  7. "time"
  8. )
  9. const (
  10. sayHi = "hello pando"
  11. testHTTPHost = "localhost:12347"
  12. )
  13. type testHttpHandler struct{}
  14. func (h testHttpHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
  15. w.Write([]byte(sayHi))
  16. }
  17. func validateHTTPServer(t *testing.T, url string) {
  18. response, err := http.Get(url)
  19. if err != nil {
  20. t.Fatal(err)
  21. }
  22. defer response.Body.Close()
  23. body, _ := ioutil.ReadAll(response.Body)
  24. if string(body) != sayHi {
  25. t.Fatalf("http server test error: want %s, got %s", sayHi, string(body))
  26. }
  27. }
  28. func validateHTTPSServer(t *testing.T, url string) {
  29. tr := &http.Transport{
  30. TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
  31. }
  32. client := &http.Client{Transport: tr}
  33. response, err := client.Get(url)
  34. if err != nil {
  35. t.Fatal(err)
  36. }
  37. defer response.Body.Close()
  38. body, _ := ioutil.ReadAll(response.Body)
  39. if string(body) != sayHi {
  40. t.Errorf("https server test error: want %s, got %s", sayHi, string(body))
  41. }
  42. }
  43. func TestHTTPServer(t *testing.T) {
  44. initLog("test", "debug")
  45. *confCAFile = ""
  46. *confKeyFile = ""
  47. svr := HTTPServer{
  48. addr: testHTTPHost,
  49. handler: testHttpHandler{},
  50. useHttps: true,
  51. }
  52. err := svr.Start()
  53. if err == nil {
  54. t.Errorf("https server should start fail when no keyfile and cafile set.")
  55. }
  56. svr = HTTPServer{
  57. addr: testHTTPHost,
  58. handler: testHttpHandler{},
  59. useHttps: false,
  60. }
  61. err = svr.Start()
  62. if err != nil {
  63. t.Fatal(err)
  64. }
  65. time.Sleep(time.Millisecond * 100)
  66. validateHTTPServer(t, "http://"+testHTTPHost)
  67. }