logger_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package logger_test
  2. import (
  3. "bytes"
  4. "fmt"
  5. "log"
  6. "net/http"
  7. "net/http/httptest"
  8. "testing"
  9. . "github.com/onsi/ginkgo"
  10. . "github.com/onsi/gomega"
  11. "github.com/vladimirok5959/golang-utils/utils/http/logger"
  12. )
  13. var _ = Describe("logger", func() {
  14. Context("ClientIP", func() {
  15. It("return client IP", func() {
  16. Expect(logger.ClientIP(&http.Request{
  17. RemoteAddr: "127.0.0.1",
  18. })).To(Equal("127.0.0.1"))
  19. Expect(logger.ClientIP(&http.Request{
  20. RemoteAddr: "192.168.0.1,127.0.0.1",
  21. })).To(Equal("192.168.0.1"))
  22. Expect(logger.ClientIP(&http.Request{
  23. RemoteAddr: "192.168.0.1, 127.0.0.1",
  24. })).To(Equal("192.168.0.1"))
  25. Expect(logger.ClientIP(&http.Request{
  26. RemoteAddr: "192.168.0.50,192.168.0.1,127.0.0.1",
  27. })).To(Equal("192.168.0.50"))
  28. Expect(logger.ClientIP(&http.Request{
  29. RemoteAddr: "192.168.0.50, 192.168.0.1, 127.0.0.1",
  30. })).To(Equal("192.168.0.50"))
  31. })
  32. })
  33. Context("ClientIPs", func() {
  34. It("return array of client IPs", func() {
  35. Expect(logger.ClientIPs(&http.Request{
  36. RemoteAddr: "127.0.0.1",
  37. })).To(ConsistOf(
  38. "127.0.0.1",
  39. ))
  40. Expect(logger.ClientIPs(&http.Request{
  41. RemoteAddr: "192.168.0.1,127.0.0.1",
  42. })).To(ConsistOf(
  43. "192.168.0.1", "127.0.0.1",
  44. ))
  45. Expect(logger.ClientIPs(&http.Request{
  46. RemoteAddr: "192.168.0.1, 127.0.0.1",
  47. })).To(ConsistOf(
  48. "192.168.0.1", "127.0.0.1",
  49. ))
  50. Expect(logger.ClientIPs(&http.Request{
  51. RemoteAddr: "192.168.0.50,192.168.0.1,127.0.0.1",
  52. })).To(ConsistOf(
  53. "192.168.0.50", "192.168.0.1", "127.0.0.1",
  54. ))
  55. Expect(logger.ClientIPs(&http.Request{
  56. RemoteAddr: "192.168.0.50, 192.168.0.1, 127.0.0.1",
  57. })).To(ConsistOf(
  58. "192.168.0.50", "192.168.0.1", "127.0.0.1",
  59. ))
  60. })
  61. })
  62. Context("LogRequests", func() {
  63. var srv *httptest.Server
  64. var client *http.Client
  65. var getTestHandler = func() http.HandlerFunc {
  66. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  67. if _, err := w.Write([]byte("Index")); err != nil {
  68. fmt.Printf("%s\n", err.Error())
  69. }
  70. })
  71. }
  72. BeforeEach(func() {
  73. srv = httptest.NewServer(logger.LogRequests(getTestHandler()))
  74. client = srv.Client()
  75. })
  76. AfterEach(func() {
  77. srv.Close()
  78. })
  79. It("log http requests", func() {
  80. buf := new(bytes.Buffer)
  81. log.SetOutput(buf)
  82. resp, err := client.Get(srv.URL + "/")
  83. Expect(err).To(Succeed())
  84. defer resp.Body.Close()
  85. Expect(resp.StatusCode).To(Equal(http.StatusOK))
  86. Expect(buf.String()).To(ContainSubstring("\"GET /\" 200"))
  87. })
  88. })
  89. })
  90. func TestSuite(t *testing.T) {
  91. RegisterFailHandler(Fail)
  92. RunSpecs(t, "logger")
  93. }