summaryrefslogtreecommitdiff
path: root/server/test/guest_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/test/guest_test.go')
-rw-r--r--server/test/guest_test.go89
1 files changed, 63 insertions, 26 deletions
diff --git a/server/test/guest_test.go b/server/test/guest_test.go
index c675ddb..206837a 100644
--- a/server/test/guest_test.go
+++ b/server/test/guest_test.go
@@ -11,53 +11,59 @@ import (
"strings"
"testing"
+ "git.huntm.net/wedding/server/admin"
"git.huntm.net/wedding/server/guest"
"github.com/jackc/pgx/v5/pgxpool"
)
var (
user = os.Getenv("USER")
- pass = os.Getenv("PASS")
+ password = os.Getenv("PASS")
host = "localhost"
port = "5432"
database = "postgres"
)
func TestUpdateRSVP(test *testing.T) {
- db, err := pgxpool.New(context.Background(), fmt.Sprintf("postgres://%s:%s@%s:%s/%s", user, pass, host, port, database))
+ databasePool, err := pgxpool.New(context.Background(),
+ fmt.Sprintf("postgres://%s:%s@%s:%s/%s", user, password, host, port, database))
if err != nil {
test.Error(err)
}
- defer db.Close()
- store := guest.NewMemStore(db)
- guestHandler := guest.NewGuestHandler(store)
+ defer databasePool.Close()
+ guestStore := guest.NewStore(databasePool)
+ guestHandler := guest.NewGuestHandler(guestStore)
+ adminStore := admin.NewStore(databasePool)
+ adminHandler := admin.NewAdminHandler(adminStore, guestStore)
- login := logIn(guestHandler, test)
- token := login.Token
+ guestLogin := logInGuest(guestHandler, test)
+ guestToken := guestLogin.Token
+ addPartyGuest(guestHandler, guestToken, test)
- addPartyGuest(guestHandler, token, test)
- guestSlice := getGuests(guestHandler, token, test)
- guest := guestSlice[0]
+ adminLogin := logInAdmin(adminHandler, test)
+ adminToken := adminLogin.Token
+ guests := getGuests(guestHandler, adminToken, test)
+ guest := findGuest(guests)
assertEquals(test, guest.Attendance, "accept")
- assertEquals(test, guest.Email, "mhunteman@yahoo.com")
+ assertEquals(test, guest.Email, "mhunteman@cox.net")
assertEquals(test, guest.Message, "We'll be there!")
assertEquals(test, guest.PartySize, 2)
assertEquals(test, guest.PartyList[0].FirstName, "Madison")
assertEquals(test, guest.PartyList[0].LastName, "Rossitto")
- deletePartyGuest(guestHandler, token, test)
- guestSlice = getGuests(guestHandler, token, test)
- guest = guestSlice[0]
- assertEquals(test, guest.Attendance, "decline")
+ deletePartyGuest(guestHandler, guestToken, test)
+ guests = getGuests(guestHandler, adminToken, test)
+ guest = findGuest(guests)
+ assertEquals(test, guest.Attendance, "")
assertEquals(test, guest.Email, "")
assertEquals(test, guest.Message, "")
assertEquals(test, guest.PartySize, 1)
}
-func logIn(guestHandler *guest.GuestHandler, test *testing.T) guest.LoginResponse {
+func logInGuest(guestHandler *guest.GuestHandler, test *testing.T) guest.LoginResponse {
response := httptest.NewRecorder()
- loginRequest, err := http.NewRequest(http.MethodPost, "http://localhost:8080/guest/login",
- strings.NewReader(getCredentials()))
+ loginRequest, err := http.NewRequest(http.MethodPost,
+ "http://localhost:8080/guest/login", strings.NewReader(getName()))
if err != nil {
test.Error(err)
}
@@ -73,7 +79,8 @@ func logIn(guestHandler *guest.GuestHandler, test *testing.T) guest.LoginRespons
func addPartyGuest(guestHandler *guest.GuestHandler, token string, test *testing.T) {
response := httptest.NewRecorder()
guestWithParty := getGuestWithParty()
- putRequest, err := http.NewRequest(http.MethodPut, "http://localhost:8080/guest/1", strings.NewReader(guestWithParty))
+ putRequest, err := http.NewRequest(http.MethodPut, "http://localhost:8080/guest/1",
+ strings.NewReader(guestWithParty))
if err != nil {
test.Error(err)
}
@@ -82,22 +89,39 @@ func addPartyGuest(guestHandler *guest.GuestHandler, token string, test *testing
assertEquals(test, response.Result().StatusCode, 200)
}
+func logInAdmin(adminHandler *admin.AdminHandler, test *testing.T) admin.LoginResponse {
+ response := httptest.NewRecorder()
+ loginRequest, err := http.NewRequest(http.MethodPost,
+ "http://localhost:8080/admin/login", strings.NewReader(getCredentials()))
+ if err != nil {
+ test.Error(err)
+ }
+ adminHandler.ServeHTTP(response, loginRequest)
+ assertEquals(test, response.Result().StatusCode, 200)
+ var login admin.LoginResponse
+ if err = json.NewDecoder(response.Body).Decode(&login); err != nil {
+ log.Fatal(err)
+ }
+ return login
+}
+
func getGuests(guestHandler *guest.GuestHandler, token string, test *testing.T) []guest.Guest {
response := httptest.NewRecorder()
getRequest, _ := http.NewRequest(http.MethodGet, "http://localhost:8080/guest/", nil)
getRequest.Header.Set("Authorization", token)
guestHandler.ServeHTTP(response, getRequest)
assertEquals(test, response.Result().StatusCode, 200)
- var guestSlice []guest.Guest
- if err := json.NewDecoder(response.Body).Decode(&guestSlice); err != nil {
+ var guests []guest.Guest
+ if err := json.NewDecoder(response.Body).Decode(&guests); err != nil {
test.Error(err)
}
- return guestSlice
+ return guests
}
func deletePartyGuest(guestHandler *guest.GuestHandler, token string, test *testing.T) {
response := httptest.NewRecorder()
- putRequest, err := http.NewRequest(http.MethodPut, "http://localhost:8080/guest/1", strings.NewReader(getGuestWithoutParty()))
+ putRequest, err := http.NewRequest(http.MethodPut, "http://localhost:8080/guest/1",
+ strings.NewReader(getGuestWithoutParty()))
if err != nil {
test.Error(err)
}
@@ -106,6 +130,15 @@ func deletePartyGuest(guestHandler *guest.GuestHandler, token string, test *test
assertEquals(test, response.Result().StatusCode, 200)
}
+func findGuest(guests []guest.Guest) *guest.Guest {
+ for _, guest := range guests {
+ if guest.ID == 1 {
+ return &guest
+ }
+ }
+ return nil
+}
+
func assertEquals(test testing.TB, actual any, expected any) {
test.Helper()
if actual != expected {
@@ -113,17 +146,21 @@ func assertEquals(test testing.TB, actual any, expected any) {
}
}
-func getCredentials() string {
+func getName() string {
return "{ \"firstName\": \"Michael\", \"lastName\": \"Hunteman\"}"
}
+func getCredentials() string {
+ return "{ \"username\": \"mhunteman\", \"password\": \"password\"}"
+}
+
func getGuestWithParty() string {
return `{"id":1,"firstName":"Michael","lastName":"Hunteman", "attendance":"accept",
- "email":"mhunteman@yahoo.com","message":"We'll be there!","partySize":2,
+ "email":"mhunteman@cox.net","message":"We'll be there!","partySize":2,
"partyList":[{"firstName":"Madison","lastName":"Rossitto"}]}`
}
func getGuestWithoutParty() string {
- return `{"id":1,"firstName":"Michael","lastName":"Hunteman","attendance":"decline",
+ return `{"id":1,"firstName":"Michael","lastName":"Hunteman","attendance":"",
"email":"","message":"","partySize":1,"partyList":[]}`
}