gin_test.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. // Copyright 2014 Manu Martinez-Almeida. All rights reserved.
  2. // Use of this source code is governed by a MIT style
  3. // license that can be found in the LICENSE file.
  4. package gin
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func init() {
  10. SetMode(TestMode)
  11. }
  12. func TestCreateEngine(t *testing.T) {
  13. router := New()
  14. assert.Equal(t, "/", router.absolutePath)
  15. assert.Equal(t, router.engine, router)
  16. assert.Empty(t, router.Handlers)
  17. // TODO
  18. // assert.Equal(t, router.router.NotFound, router.handle404)
  19. // assert.Equal(t, router.router.MethodNotAllowed, router.handle405)
  20. }
  21. func TestCreateDefaultRouter(t *testing.T) {
  22. router := Default()
  23. assert.Len(t, router.Handlers, 2)
  24. }
  25. func TestNoRouteWithoutGlobalHandlers(t *testing.T) {
  26. middleware0 := func(c *Context) {}
  27. middleware1 := func(c *Context) {}
  28. router := New()
  29. router.NoRoute(middleware0)
  30. assert.Nil(t, router.Handlers)
  31. assert.Len(t, router.noRoute, 1)
  32. assert.Len(t, router.allNoRoute, 1)
  33. assert.Equal(t, router.noRoute[0], middleware0)
  34. assert.Equal(t, router.allNoRoute[0], middleware0)
  35. router.NoRoute(middleware1, middleware0)
  36. assert.Len(t, router.noRoute, 2)
  37. assert.Len(t, router.allNoRoute, 2)
  38. assert.Equal(t, router.noRoute[0], middleware1)
  39. assert.Equal(t, router.allNoRoute[0], middleware1)
  40. assert.Equal(t, router.noRoute[1], middleware0)
  41. assert.Equal(t, router.allNoRoute[1], middleware0)
  42. }
  43. func TestNoRouteWithGlobalHandlers(t *testing.T) {
  44. middleware0 := func(c *Context) {}
  45. middleware1 := func(c *Context) {}
  46. middleware2 := func(c *Context) {}
  47. router := New()
  48. router.Use(middleware2)
  49. router.NoRoute(middleware0)
  50. assert.Len(t, router.allNoRoute, 2)
  51. assert.Len(t, router.Handlers, 1)
  52. assert.Len(t, router.noRoute, 1)
  53. assert.Equal(t, router.Handlers[0], middleware2)
  54. assert.Equal(t, router.noRoute[0], middleware0)
  55. assert.Equal(t, router.allNoRoute[0], middleware2)
  56. assert.Equal(t, router.allNoRoute[1], middleware0)
  57. router.Use(middleware1)
  58. assert.Len(t, router.allNoRoute, 3)
  59. assert.Len(t, router.Handlers, 2)
  60. assert.Len(t, router.noRoute, 1)
  61. assert.Equal(t, router.Handlers[0], middleware2)
  62. assert.Equal(t, router.Handlers[1], middleware1)
  63. assert.Equal(t, router.noRoute[0], middleware0)
  64. assert.Equal(t, router.allNoRoute[0], middleware2)
  65. assert.Equal(t, router.allNoRoute[1], middleware1)
  66. assert.Equal(t, router.allNoRoute[2], middleware0)
  67. }
  68. func TestNoMethodWithoutGlobalHandlers(t *testing.T) {
  69. middleware0 := func(c *Context) {}
  70. middleware1 := func(c *Context) {}
  71. router := New()
  72. router.NoMethod(middleware0)
  73. assert.Empty(t, router.Handlers)
  74. assert.Len(t, router.noMethod, 1)
  75. assert.Len(t, router.allNoMethod, 1)
  76. assert.Equal(t, router.noMethod[0], middleware0)
  77. assert.Equal(t, router.allNoMethod[0], middleware0)
  78. router.NoMethod(middleware1, middleware0)
  79. assert.Len(t, router.noMethod, 2)
  80. assert.Len(t, router.allNoMethod, 2)
  81. assert.Equal(t, router.noMethod[0], middleware1)
  82. assert.Equal(t, router.allNoMethod[0], middleware1)
  83. assert.Equal(t, router.noMethod[1], middleware0)
  84. assert.Equal(t, router.allNoMethod[1], middleware0)
  85. }
  86. func TestRebuild404Handlers(t *testing.T) {
  87. }
  88. func TestNoMethodWithGlobalHandlers(t *testing.T) {
  89. middleware0 := func(c *Context) {}
  90. middleware1 := func(c *Context) {}
  91. middleware2 := func(c *Context) {}
  92. router := New()
  93. router.Use(middleware2)
  94. router.NoMethod(middleware0)
  95. assert.Len(t, router.allNoMethod, 2)
  96. assert.Len(t, router.Handlers, 1)
  97. assert.Len(t, router.noMethod, 1)
  98. assert.Equal(t, router.Handlers[0], middleware2)
  99. assert.Equal(t, router.noMethod[0], middleware0)
  100. assert.Equal(t, router.allNoMethod[0], middleware2)
  101. assert.Equal(t, router.allNoMethod[1], middleware0)
  102. router.Use(middleware1)
  103. assert.Len(t, router.allNoMethod, 3)
  104. assert.Len(t, router.Handlers, 2)
  105. assert.Len(t, router.noMethod, 1)
  106. assert.Equal(t, router.Handlers[0], middleware2)
  107. assert.Equal(t, router.Handlers[1], middleware1)
  108. assert.Equal(t, router.noMethod[0], middleware0)
  109. assert.Equal(t, router.allNoMethod[0], middleware2)
  110. assert.Equal(t, router.allNoMethod[1], middleware1)
  111. assert.Equal(t, router.allNoMethod[2], middleware0)
  112. }