tsk-24: Fixed tests (#25)
Closes #24 Reviewed-on: phoenix/textsender-api#25 Co-authored-by: phoenix <kundeng00@pm.me> Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
+2
-2
@@ -64,12 +64,12 @@ func main() {
|
|||||||
contactStore := store.NewContactStore(db.Pool)
|
contactStore := store.NewContactStore(db.Pool)
|
||||||
messageStore := store.NewMessageStore(db.Pool)
|
messageStore := store.NewMessageStore(db.Pool)
|
||||||
schStore := store.NewScheduledMessageStore(db.Pool)
|
schStore := store.NewScheduledMessageStore(db.Pool)
|
||||||
schMsgEvent := store.NewScheduledMessageEventStore(db.Pool)
|
schMsgEventStore := store.NewScheduledMessageEventStore(db.Pool)
|
||||||
|
|
||||||
contactHandler := handler.NewContactHandler(contactStore)
|
contactHandler := handler.NewContactHandler(contactStore)
|
||||||
messageHandler := handler.NewMessageHandler(messageStore)
|
messageHandler := handler.NewMessageHandler(messageStore)
|
||||||
scheduledMessageHandler := handler.NewScheduledMessageHandler(schStore)
|
scheduledMessageHandler := handler.NewScheduledMessageHandler(schStore)
|
||||||
scheduledMessageEventHandler := handler.NewScheduledMessageEventHandler(schMsgEvent)
|
scheduledMessageEventHandler := handler.NewScheduledMessageEventHandler(schMsgEventStore)
|
||||||
|
|
||||||
router := chi.NewRouter()
|
router := chi.NewRouter()
|
||||||
|
|
||||||
|
|||||||
+34
-5
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -15,6 +16,8 @@ import (
|
|||||||
"git.kundeng.us/phoenix/textsender-api/internal/db"
|
"git.kundeng.us/phoenix/textsender-api/internal/db"
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/handler"
|
"git.kundeng.us/phoenix/textsender-api/internal/handler"
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
||||||
|
mdlware "git.kundeng.us/phoenix/textsender-api/internal/middleware"
|
||||||
|
"git.kundeng.us/phoenix/textsender-api/internal/services"
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/store"
|
"git.kundeng.us/phoenix/textsender-api/internal/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -23,25 +26,51 @@ var testRouter *mux.Router
|
|||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
cfg := load()
|
cfg := load()
|
||||||
|
|
||||||
db, err := db.NewDatabase(cfg.GetDBConnString())
|
database, err := db.NewDatabase(cfg.GetDBConnString())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err.Error())
|
fmt.Println(err.Error())
|
||||||
panic("Failed to initialize database")
|
panic("Failed to initialize database")
|
||||||
}
|
}
|
||||||
defer db.Close()
|
defer database.Close()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
err = db.ResetDatabase(ctx)
|
|
||||||
if err != nil {
|
if cfg.ResetDB {
|
||||||
|
if err = database.ResetDatabase(ctx); err != nil {
|
||||||
fmt.Println(err.Error())
|
fmt.Println(err.Error())
|
||||||
panic("Failed to initialize database")
|
panic("Failed to initialize database")
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if exists, err := db.TableExists(ctx, database.Pool, "contacts "); err == nil && !exists {
|
||||||
|
fmt.Println("Resetting database")
|
||||||
|
err = database.ResetDatabase(ctx)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error:%v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Printf("Error:%v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jwtService := services.NewJWTService(cfg.JWTSecret)
|
||||||
|
|
||||||
|
contactStore := store.NewContactStore(database.Pool)
|
||||||
|
messageStore := store.NewMessageStore(db.Pool)
|
||||||
|
schStore := store.NewScheduledMessageStore(db.Pool)
|
||||||
|
schMsgEventStore := store.NewScheduledMessageEventStore(db.Pool)
|
||||||
|
|
||||||
contactStore := store.NewContactStore(db.Pool)
|
|
||||||
contactHandler := handler.NewContactHandler(contactStore)
|
contactHandler := handler.NewContactHandler(contactStore)
|
||||||
|
messageHandler := handler.NewMessageHandler(messageStore)
|
||||||
|
scheduledMessageHandler := handler.NewScheduledMessageHandler(schStore)
|
||||||
|
scheduledMessageEventHandler := handler.NewScheduledMessageEventHandler(schMsgEventStore)
|
||||||
|
|
||||||
testRouter = mux.NewRouter()
|
testRouter = mux.NewRouter()
|
||||||
testRouter.HandleFunc(endpoint.ADD_CONTACT_ENDPOINT, contactHandler.AddContact).Methods("POST")
|
testRouter.HandleFunc(endpoint.ADD_CONTACT_ENDPOINT, contactHandler.AddContact).Methods("POST")
|
||||||
|
testRouter.Handle(endpoint.GET_CONTACT, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(contactHandler.GetContact)))
|
||||||
|
testRouter.Handle(endpoint.ADD_MESSAGE, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(messageHandler.AddMessage)))
|
||||||
|
testRouter.Handle(endpoint.GET_MESSAGE, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(messageHandler.GetMessage)))
|
||||||
|
testRouter.Handle(endpoint.ScheduleMessageEndpoint, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(scheduledMessageHandler.AddScheduledMessage)))
|
||||||
|
testRouter.Handle(endpoint.AddEventToScheduledMessageEndpoint, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(scheduledMessageEventHandler.AddScheduledMessageEvent)))
|
||||||
|
|
||||||
code := m.Run()
|
code := m.Run()
|
||||||
os.Exit(code)
|
os.Exit(code)
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/db"
|
"git.kundeng.us/phoenix/textsender-api/internal/db"
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
||||||
|
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Request struct {
|
type Request struct {
|
||||||
@@ -23,7 +24,7 @@ type Request struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateContactWithMock(t *testing.T) {
|
func TestCreateContactWithMock(t *testing.T) {
|
||||||
mockstore := NewMockContactStore()
|
mockstore := mock.NewMockContactStore()
|
||||||
handler := NewContactHandler(mockstore)
|
handler := NewContactHandler(mockstore)
|
||||||
|
|
||||||
testUserId := uuid.New()
|
testUserId := uuid.New()
|
||||||
@@ -47,7 +48,7 @@ func TestCreateContactWithMock(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetContactWithMock(t *testing.T) {
|
func TestGetContactWithMock(t *testing.T) {
|
||||||
mockstore := NewMockContactStore()
|
mockstore := mock.NewMockContactStore()
|
||||||
testUserId := uuid.New()
|
testUserId := uuid.New()
|
||||||
|
|
||||||
testCon := contact.Contact{PhoneNumber: "+12335403383", UserId: testUserId}
|
testCon := contact.Contact{PhoneNumber: "+12335403383", UserId: testUserId}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
||||||
|
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateMessageRequest struct {
|
type CreateMessageRequest struct {
|
||||||
@@ -21,7 +22,7 @@ type CreateMessageRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateMessageWithMock(t *testing.T) {
|
func TestCreateMessageWithMock(t *testing.T) {
|
||||||
mockStore := NewMockMessageStore()
|
mockStore := mock.NewMockMessageStore()
|
||||||
handler := NewMessageHandler(mockStore)
|
handler := NewMessageHandler(mockStore)
|
||||||
|
|
||||||
testUserId := uuid.New()
|
testUserId := uuid.New()
|
||||||
@@ -45,7 +46,7 @@ func TestCreateMessageWithMock(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetMessageWithMock(t *testing.T) {
|
func TestGetMessageWithMock(t *testing.T) {
|
||||||
mockstore := NewMockMessageStore()
|
mockstore := mock.NewMockMessageStore()
|
||||||
testUserId := uuid.New()
|
testUserId := uuid.New()
|
||||||
|
|
||||||
testCon := message.Message{Content: "Who is the one that benefits?", UserId: testUserId}
|
testCon := message.Message{Content: "Who is the one that benefits?", UserId: testUserId}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
||||||
|
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateScheduledMessageEventRequest struct {
|
type CreateScheduledMessageEventRequest struct {
|
||||||
@@ -26,10 +27,11 @@ type CreateScheduledMessageEventRequest struct {
|
|||||||
func TestCreateScheduledMessageEventWithMock(t *testing.T) {
|
func TestCreateScheduledMessageEventWithMock(t *testing.T) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
||||||
mockStore := NewMockScheduledMessageEventStore()
|
mockStore := mock.NewMockScheduledMessageEventStore()
|
||||||
contactStore := NewMockContactStore()
|
contactStore := mock.NewMockContactStore()
|
||||||
messageStore := NewMockMessageStore()
|
messageStore := mock.NewMockMessageStore()
|
||||||
schMsgStore := NewMockScheduledMessageStore()
|
schMsgStore := mock.NewMockScheduledMessageStore()
|
||||||
|
|
||||||
handler := NewScheduledMessageEventHandler(mockStore)
|
handler := NewScheduledMessageEventHandler(mockStore)
|
||||||
|
|
||||||
recipientId := uuid.New()
|
recipientId := uuid.New()
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
|
||||||
|
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateScheduledMessageRequest struct {
|
type CreateScheduledMessageRequest struct {
|
||||||
@@ -23,7 +24,7 @@ type CreateScheduledMessageRequest struct {
|
|||||||
|
|
||||||
func TestCreateScheduledMessageWithMock(t *testing.T) {
|
func TestCreateScheduledMessageWithMock(t *testing.T) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
mockStore := NewMockScheduledMessageStore()
|
mockStore := mock.NewMockScheduledMessageStore()
|
||||||
handler := NewScheduledMessageHandler(mockStore)
|
handler := NewScheduledMessageHandler(mockStore)
|
||||||
|
|
||||||
testUserId := uuid.New()
|
testUserId := uuid.New()
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package handler
|
package mock
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
|
||||||
@@ -272,12 +273,12 @@ func (m *MockScheduledMessageEventStore) CreateScheduledMessageEvent(ctx context
|
|||||||
event.Id = uuid.New()
|
event.Id = uuid.New()
|
||||||
}
|
}
|
||||||
|
|
||||||
if exists, err := m.Exists(ctx, event); err != nil {
|
key := ScheduledMessageEventKey{RecipientId: event.RecipientId, MessageId: event.MessageId, ScheduledMessageId: event.ScheduledMessageId}
|
||||||
return err
|
|
||||||
} else if exists {
|
if _, exists := m.ScheduledMessageEventsByKey[key]; exists {
|
||||||
return fmt.Errorf("Already exists")
|
return fmt.Errorf("Already exists")
|
||||||
} else {
|
} else {
|
||||||
key := ScheduledMessageEventKey{RecipientId: event.RecipientId, MessageId: event.MessageId, ScheduledMessageId: event.ScheduledMessageId}
|
event.Created = time.Now()
|
||||||
m.ScheduledMessageEvents[event.Id] = event
|
m.ScheduledMessageEvents[event.Id] = event
|
||||||
m.ScheduledMessageEventsByKey[key] = event
|
m.ScheduledMessageEventsByKey[key] = event
|
||||||
return nil
|
return nil
|
||||||
@@ -2,19 +2,19 @@ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS contacts CASCADE;
|
DROP TABLE IF EXISTS contacts CASCADE;
|
||||||
|
|
||||||
CREATE TABLE contacts (
|
CREATE TABLE IF NOT EXISTS contacts (
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||||
phone_number TEXT NOT NULL,
|
phone_number TEXT NOT NULL,
|
||||||
user_id UUID NOT NULL
|
user_id UUID NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE messages (
|
CREATE TABLE IF NOT EXISTS messages (
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||||
content TEXT NOT NULL,
|
content TEXT NOT NULL,
|
||||||
user_id UUID NOT NULL
|
user_id UUID NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE scheduled_messages (
|
CREATE TABLE IF NOT EXISTS scheduled_messages (
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||||
scheduled timestamptz NOT NULL,
|
scheduled timestamptz NOT NULL,
|
||||||
created timestamptz DEFAULT now(),
|
created timestamptz DEFAULT now(),
|
||||||
@@ -22,7 +22,7 @@ CREATE TABLE scheduled_messages (
|
|||||||
user_id UUID NOT NULL
|
user_id UUID NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE scheduled_message_events (
|
CREATE TABLE IF NOT EXISTS scheduled_message_events (
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||||
recipient_id UUID NOT NULL,
|
recipient_id UUID NOT NULL,
|
||||||
message_id UUID NOT NULL,
|
message_id UUID NOT NULL,
|
||||||
|
|||||||
Reference in New Issue
Block a user