api/cmd/main_test.go

90 lines
2.1 KiB
Go
Raw Normal View History

2022-10-27 04:04:49 +02:00
package main
import (
2022-10-29 05:09:52 +02:00
"bytes"
"context"
"encoding/json"
2022-10-27 04:04:49 +02:00
"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"
2022-10-27 04:04:49 +02:00
"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"
2022-10-29 05:09:52 +02:00
"gitea.theedgeofrage.com/TheEdgeOfRage/ytrssil-api/models"
2022-10-27 04:04:49 +02:00
)
var testConfig config.Config
func init() {
testConfig = config.TestConfig()
}
2022-10-29 05:09:52 +02:00
func setupTestServer(t *testing.T, authEnabled bool) (*http.Server, db.DB) {
2022-10-27 04:04:49 +02:00
l := log.NewNopLogger()
2022-10-29 05:09:52 +02:00
db, err := db.NewPostgresDB(l, testConfig.DB)
2022-10-27 04:04:49 +02:00
if !assert.NoError(t, err) {
2022-10-29 05:09:52 +02:00
return nil, nil
2022-10-27 04:04:49 +02:00
}
parser := feedparser.NewParser(l)
handler := handler.New(l, db, parser)
2022-10-27 04:04:49 +02:00
gin.SetMode(gin.TestMode)
router, err := ytrssil.SetupGinRouter(
l,
handler,
auth.AuthMiddleware(db),
)
if !assert.NoError(t, err) {
2022-10-29 05:09:52 +02:00
return nil, nil
2022-10-27 04:04:49 +02:00
}
return &http.Server{
Addr: fmt.Sprintf(":%v", testConfig.Gin.Port),
Handler: router,
2022-10-29 05:09:52 +02:00
}, db
2022-10-27 04:04:49 +02:00
}
func TestHealthz(t *testing.T) {
2022-10-29 05:09:52 +02:00
server, _ := setupTestServer(t, false)
2022-10-27 04:04:49 +02:00
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())
}
2022-10-29 05:09:52 +02:00
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")
}