gin_test.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. //TODO
  10. // func (engine *Engine) LoadHTMLGlob(pattern string) {
  11. // func (engine *Engine) LoadHTMLFiles(files ...string) {
  12. // func (engine *Engine) Run(addr string) error {
  13. // func (engine *Engine) RunTLS(addr string, cert string, key string) error {
  14. func init() {
  15. SetMode(TestMode)
  16. }
  17. func TestCreateEngine(t *testing.T) {
  18. router := New()
  19. assert.Equal(t, "/", router.absolutePath)
  20. assert.Equal(t, router.engine, router)
  21. assert.Empty(t, router.Handlers)
  22. assert.Panics(t, func() { router.handle("", "/", []HandlerFunc{func(_ *Context) {}}) })
  23. assert.Panics(t, func() { router.handle("GET", "", []HandlerFunc{func(_ *Context) {}}) })
  24. assert.Panics(t, func() { router.handle("GET", "/", []HandlerFunc{}) })
  25. }
  26. func TestCreateDefaultRouter(t *testing.T) {
  27. router := Default()
  28. assert.Len(t, router.Handlers, 2)
  29. }
  30. func TestNoRouteWithoutGlobalHandlers(t *testing.T) {
  31. middleware0 := func(c *Context) {}
  32. middleware1 := func(c *Context) {}
  33. router := New()
  34. router.NoRoute(middleware0)
  35. assert.Nil(t, router.Handlers)
  36. assert.Len(t, router.noRoute, 1)
  37. assert.Len(t, router.allNoRoute, 1)
  38. assert.Equal(t, router.noRoute[0], middleware0)
  39. assert.Equal(t, router.allNoRoute[0], middleware0)
  40. router.NoRoute(middleware1, middleware0)
  41. assert.Len(t, router.noRoute, 2)
  42. assert.Len(t, router.allNoRoute, 2)
  43. assert.Equal(t, router.noRoute[0], middleware1)
  44. assert.Equal(t, router.allNoRoute[0], middleware1)
  45. assert.Equal(t, router.noRoute[1], middleware0)
  46. assert.Equal(t, router.allNoRoute[1], middleware0)
  47. }
  48. func TestNoRouteWithGlobalHandlers(t *testing.T) {
  49. middleware0 := func(c *Context) {}
  50. middleware1 := func(c *Context) {}
  51. middleware2 := func(c *Context) {}
  52. router := New()
  53. router.Use(middleware2)
  54. router.NoRoute(middleware0)
  55. assert.Len(t, router.allNoRoute, 2)
  56. assert.Len(t, router.Handlers, 1)
  57. assert.Len(t, router.noRoute, 1)
  58. assert.Equal(t, router.Handlers[0], middleware2)
  59. assert.Equal(t, router.noRoute[0], middleware0)
  60. assert.Equal(t, router.allNoRoute[0], middleware2)
  61. assert.Equal(t, router.allNoRoute[1], middleware0)
  62. router.Use(middleware1)
  63. assert.Len(t, router.allNoRoute, 3)
  64. assert.Len(t, router.Handlers, 2)
  65. assert.Len(t, router.noRoute, 1)
  66. assert.Equal(t, router.Handlers[0], middleware2)
  67. assert.Equal(t, router.Handlers[1], middleware1)
  68. assert.Equal(t, router.noRoute[0], middleware0)
  69. assert.Equal(t, router.allNoRoute[0], middleware2)
  70. assert.Equal(t, router.allNoRoute[1], middleware1)
  71. assert.Equal(t, router.allNoRoute[2], middleware0)
  72. }
  73. func TestNoMethodWithoutGlobalHandlers(t *testing.T) {
  74. middleware0 := func(c *Context) {}
  75. middleware1 := func(c *Context) {}
  76. router := New()
  77. router.NoMethod(middleware0)
  78. assert.Empty(t, router.Handlers)
  79. assert.Len(t, router.noMethod, 1)
  80. assert.Len(t, router.allNoMethod, 1)
  81. assert.Equal(t, router.noMethod[0], middleware0)
  82. assert.Equal(t, router.allNoMethod[0], middleware0)
  83. router.NoMethod(middleware1, middleware0)
  84. assert.Len(t, router.noMethod, 2)
  85. assert.Len(t, router.allNoMethod, 2)
  86. assert.Equal(t, router.noMethod[0], middleware1)
  87. assert.Equal(t, router.allNoMethod[0], middleware1)
  88. assert.Equal(t, router.noMethod[1], middleware0)
  89. assert.Equal(t, router.allNoMethod[1], middleware0)
  90. }
  91. func TestRebuild404Handlers(t *testing.T) {
  92. }
  93. func TestNoMethodWithGlobalHandlers(t *testing.T) {
  94. middleware0 := func(c *Context) {}
  95. middleware1 := func(c *Context) {}
  96. middleware2 := func(c *Context) {}
  97. router := New()
  98. router.Use(middleware2)
  99. router.NoMethod(middleware0)
  100. assert.Len(t, router.allNoMethod, 2)
  101. assert.Len(t, router.Handlers, 1)
  102. assert.Len(t, router.noMethod, 1)
  103. assert.Equal(t, router.Handlers[0], middleware2)
  104. assert.Equal(t, router.noMethod[0], middleware0)
  105. assert.Equal(t, router.allNoMethod[0], middleware2)
  106. assert.Equal(t, router.allNoMethod[1], middleware0)
  107. router.Use(middleware1)
  108. assert.Len(t, router.allNoMethod, 3)
  109. assert.Len(t, router.Handlers, 2)
  110. assert.Len(t, router.noMethod, 1)
  111. assert.Equal(t, router.Handlers[0], middleware2)
  112. assert.Equal(t, router.Handlers[1], middleware1)
  113. assert.Equal(t, router.noMethod[0], middleware0)
  114. assert.Equal(t, router.allNoMethod[0], middleware2)
  115. assert.Equal(t, router.allNoMethod[1], middleware1)
  116. assert.Equal(t, router.allNoMethod[2], middleware0)
  117. }