Skip to content

Commit 2c46a27

Browse files
chore(tests): add test data setup and JWT support for benchmarks
1 parent 02b5be1 commit 2c46a27

1 file changed

Lines changed: 68 additions & 6 deletions

File tree

tests/benchmarks/suite_test.go

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,27 @@ import (
1313
"github.com/capyrpi/api/internal/config"
1414
"github.com/capyrpi/api/internal/database"
1515
"github.com/capyrpi/api/internal/handler"
16+
"github.com/capyrpi/api/internal/middleware"
1617
"github.com/capyrpi/api/internal/router"
1718
"github.com/go-chi/chi/v5"
19+
"github.com/golang-jwt/jwt/v5"
20+
"github.com/jackc/pgx/v5/pgtype"
1821
"github.com/jackc/pgx/v5/pgxpool"
1922
"github.com/testcontainers/testcontainers-go"
2023
"github.com/testcontainers/testcontainers-go/modules/postgres"
2124
"github.com/testcontainers/testcontainers-go/wait"
2225
)
2326

2427
var (
25-
benchDB *pgxpool.Pool
26-
benchRouter chi.Router
27-
benchServer *httptest.Server
28+
benchDB *pgxpool.Pool
29+
benchRouter chi.Router
30+
benchServer *httptest.Server
31+
benchQueries *database.Queries
32+
benchJWTToken string
33+
benchUserID string
34+
benchOrgID string
35+
benchEventID string
36+
benchJWTSecret string = "bench-secret"
2837
)
2938

3039
func TestMain(m *testing.M) {
@@ -73,7 +82,8 @@ func TestMain(m *testing.M) {
7382
log.Fatalf("failed to connect to database: %v", err)
7483
}
7584

76-
queries := database.New(benchDB)
85+
benchQueries = database.New(benchDB)
86+
setupTestData(ctx)
7787

7888
cfg := &config.Config{
7989
Env: "bench",
@@ -95,8 +105,8 @@ func TestMain(m *testing.M) {
95105
},
96106
}
97107

98-
h := handler.New(queries, cfg)
99-
benchRouter = router.New(h, queries, cfg.JWT.Secret, []string{"*"})
108+
h := handler.New(benchQueries, cfg)
109+
benchRouter = router.New(h, benchQueries, cfg.JWT.Secret, []string{"*"})
100110

101111
benchServer = httptest.NewServer(benchRouter)
102112
defer benchServer.Close()
@@ -106,3 +116,55 @@ func TestMain(m *testing.M) {
106116

107117
os.Exit(code)
108118
}
119+
120+
func setupTestData(ctx context.Context) {
121+
user, err := benchQueries.CreateUser(ctx, database.CreateUserParams{
122+
FirstName: "Bench",
123+
LastName: "User",
124+
PersonalEmail: pgtype.Text{String: "bench@example.com", Valid: true},
125+
Role: database.NullUserRole{UserRole: database.UserRoleStudent, Valid: true},
126+
})
127+
if err != nil {
128+
log.Fatalf("failed to create user: %v", err)
129+
}
130+
benchUserID = user.Uid.String()
131+
132+
org, err := benchQueries.CreateOrganization(ctx, "Bench Org")
133+
if err != nil {
134+
log.Fatalf("failed to create organization: %v", err)
135+
}
136+
benchOrgID = org.Oid.String()
137+
138+
event, err := benchQueries.CreateEvent(ctx, database.CreateEventParams{
139+
Location: pgtype.Text{String: "Bench Event", Valid: true},
140+
EventTime: pgtype.Timestamp{Time: time.Now().Add(24 * time.Hour), Valid: true},
141+
Description: pgtype.Text{String: "Benchmark organization", Valid: true},
142+
})
143+
if err != nil {
144+
log.Fatalf("failed to create event: %v", err)
145+
}
146+
benchEventID = event.Eid.String()
147+
148+
err = benchQueries.AddEventHost(ctx, database.AddEventHostParams{
149+
Eid: event.Eid,
150+
Oid: org.Oid,
151+
})
152+
if err != nil {
153+
log.Fatalf("failed to add event host: %v", err)
154+
}
155+
156+
claims := middleware.UserClaims{
157+
UserID: benchUserID,
158+
Email: "bench@example.com",
159+
Role: "student",
160+
RegisteredClaims: jwt.RegisteredClaims{
161+
ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)),
162+
IssuedAt: jwt.NewNumericDate(time.Now()),
163+
},
164+
}
165+
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
166+
benchJWTToken, err = token.SignedString([]byte(benchJWTSecret))
167+
if err != nil {
168+
log.Fatalf("failed to generate token: %v", err)
169+
}
170+
}

0 commit comments

Comments
 (0)