90 lines
2.1 KiB
Go
90 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/config"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/db"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/feedparser"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/handler"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/httpserver/auth"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/httpserver/ytrssil"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/lib/log"
|
|
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/models"
|
|
)
|
|
|
|
var testConfig config.Config
|
|
|
|
func init() {
|
|
testConfig = config.TestConfig()
|
|
}
|
|
|
|
func setupTestServer(t *testing.T, authEnabled bool) (*http.Server, db.DB) {
|
|
l := log.NewNopLogger()
|
|
|
|
db, err := db.NewPostgresDB(l, testConfig.DB)
|
|
if !assert.NoError(t, err) {
|
|
return nil, nil
|
|
}
|
|
parser := feedparser.NewParser(l)
|
|
handler := handler.New(l, db, parser)
|
|
gin.SetMode(gin.TestMode)
|
|
router, err := ytrssil.SetupGinRouter(
|
|
l,
|
|
handler,
|
|
auth.AuthMiddleware(db),
|
|
)
|
|
if !assert.NoError(t, err) {
|
|
return nil, nil
|
|
}
|
|
|
|
return &http.Server{
|
|
Addr: fmt.Sprintf(":%v", testConfig.Gin.Port),
|
|
Handler: router,
|
|
}, db
|
|
}
|
|
|
|
func TestHealthz(t *testing.T) {
|
|
server, _ := setupTestServer(t, false)
|
|
if !assert.NotNil(t, server) {
|
|
return
|
|
}
|
|
|
|
w := httptest.NewRecorder()
|
|
req, _ := http.NewRequest("GET", "/healthz", nil)
|
|
server.Handler.ServeHTTP(w, req)
|
|
|
|
assert.Equal(t, 200, w.Code)
|
|
assert.Equal(t, "healthy", w.Body.String())
|
|
}
|
|
|
|
func TestCreateUser(t *testing.T) {
|
|
server, db := setupTestServer(t, false)
|
|
if !assert.NotNil(t, server) {
|
|
return
|
|
}
|
|
|
|
jsonData, err := json.Marshal(models.User{Username: "test", Password: "test"})
|
|
if !assert.Nil(t, err) {
|
|
return
|
|
}
|
|
data := bytes.NewBuffer(jsonData)
|
|
req, _ := http.NewRequest("POST", "/register", data)
|
|
w := httptest.NewRecorder()
|
|
server.Handler.ServeHTTP(w, req)
|
|
|
|
assert.Equal(t, 200, w.Code)
|
|
assert.Equal(t, `{"msg":"user created"}`, w.Body.String())
|
|
|
|
db.DeleteUser(context.TODO(), "test")
|
|
}
|