Golang_demo/main_test.go

85 lines
1.8 KiB
Go
Raw Permalink Normal View History

2025-06-25 13:26:35 +08:00
package main
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/assert"
)
func TestMain(m *testing.M) {
gin.SetMode(gin.TestMode)
m.Run()
}
func TestPingRoute(t *testing.T) {
router := setupRouter()
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/ping", nil)
router.ServeHTTP(w, req)
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Body.String(), "pong")
}
func TestHealthRoute(t *testing.T) {
router := setupRouter()
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/health", nil)
router.ServeHTTP(w, req)
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Body.String(), "healthy")
}
func TestHomeRoute(t *testing.T) {
router := setupRouter()
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/", nil)
router.ServeHTTP(w, req)
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Body.String(), "Welcome to Golang Demo API")
}
func TestVersionRoute(t *testing.T) {
router := setupRouter()
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/version", nil)
router.ServeHTTP(w, req)
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Body.String(), "version")
}
func TestAPIStatusRoute(t *testing.T) {
router := setupRouter()
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/api/v1/status", nil)
router.ServeHTTP(w, req)
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Body.String(), "v1")
}
func TestEchoRoute(t *testing.T) {
router := setupRouter()
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
body := `{"message": "test message"}`
w := httptest.NewRecorder()
req, _ := http.NewRequest("POST", "/api/v1/echo", strings.NewReader(body))
req.Header.Set("Content-Type", "application/json")
router.ServeHTTP(w, req)
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Body.String(), "test message")
2025-06-25 15:12:40 +08:00
}