github.com/soulteary/pocket-bookcase@v0.0.0-20240428065142-0b5a9a0fc98a/internal/http/routes/swagger_test.go (about)

     1  package routes
     2  
     3  import (
     4  	"net/http/httptest"
     5  	"testing"
     6  
     7  	"github.com/gin-gonic/gin"
     8  	"github.com/sirupsen/logrus"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestSwaggerRoutes(t *testing.T) {
    13  	logger := logrus.New()
    14  
    15  	g := gin.Default()
    16  
    17  	router := NewSwaggerAPIRoutes(logger)
    18  	router.Setup(g.Group("/swagger"))
    19  
    20  	t.Run("/swagger/doc.json", func(t *testing.T) {
    21  		w := httptest.NewRecorder()
    22  		req := httptest.NewRequest("GET", "/swagger/doc.json", nil)
    23  		g.ServeHTTP(w, req)
    24  		require.Equal(t, 200, w.Code)
    25  	})
    26  
    27  	t.Run("/swagger/ redirects", func(t *testing.T) {
    28  		w := httptest.NewRecorder()
    29  		req := httptest.NewRequest("GET", "/swagger/", nil)
    30  		g.ServeHTTP(w, req)
    31  		require.Equal(t, 302, w.Code)
    32  		require.Equal(t, "/swagger/index.html", w.Header().Get("Location"))
    33  	})
    34  
    35  	t.Run("/swagger redirects", func(t *testing.T) {
    36  		w := httptest.NewRecorder()
    37  		req := httptest.NewRequest("GET", "/swagger/", nil)
    38  		g.ServeHTTP(w, req)
    39  		require.Equal(t, 302, w.Code)
    40  		require.Equal(t, "/swagger/index.html", w.Header().Get("Location"))
    41  	})
    42  }