Skip to content

Commit 8c2036f

Browse files
committed
fix integration testing
1 parent 95910fd commit 8c2036f

2 files changed

Lines changed: 90 additions & 11 deletions

File tree

api/user/service.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ type Service interface {
2121
CreateUser(
2222
email string, password string, name string, profilePicURL *string, roles []*model.Role,
2323
) (*model.User, error)
24+
25+
/*--------only for tests----------*/
26+
CreateRole(code model.RoleCode) (*model.Role, error)
27+
DeleteRole(role *model.Role) (bool, error)
28+
/*--------------------------------*/
2429
}
2530

2631
type service struct {
@@ -469,3 +474,56 @@ func (s *service) DeleteUserByEmail(ctx context.Context, email string) (bool, er
469474

470475
return tag.RowsAffected() > 0, nil
471476
}
477+
478+
func (s *service) CreateRole(code model.RoleCode) (*model.Role, error) {
479+
ctx := context.Background()
480+
481+
var role model.Role
482+
483+
query := `
484+
INSERT INTO roles (
485+
code
486+
)
487+
VALUES ($1)
488+
RETURNING
489+
id,
490+
code,
491+
status,
492+
created_at,
493+
updated_at
494+
`
495+
496+
err := s.db.QueryRow(
497+
ctx,
498+
query,
499+
code,
500+
).Scan(
501+
&role.ID,
502+
&role.Code,
503+
&role.Status,
504+
&role.CreatedAt,
505+
&role.UpdatedAt,
506+
)
507+
508+
if err != nil {
509+
return nil, err
510+
}
511+
512+
return &role, nil
513+
}
514+
515+
func (s *service) DeleteRole(role *model.Role) (bool, error) {
516+
ctx := context.Background()
517+
518+
query := `
519+
DELETE FROM roles
520+
WHERE id = $1
521+
`
522+
523+
tag, err := s.db.Exec(ctx, query, role.ID)
524+
if err != nil {
525+
return false, err
526+
}
527+
528+
return tag.RowsAffected() > 0, nil
529+
}

tests/auth_integration_test.go

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,58 @@ import (
77
"testing"
88

99
"github.com/afteracademy/goserve-example-api-server-postgres/api/auth/model"
10+
roleModel "github.com/afteracademy/goserve-example-api-server-postgres/api/user/model"
1011
"github.com/afteracademy/goserve-example-api-server-postgres/startup"
1112
"github.com/afteracademy/goserve/v2/network"
13+
"github.com/afteracademy/goserve/v2/utility"
1214
"github.com/stretchr/testify/assert"
1315
)
1416

1517
func TestIntegrationAuthController_SignupSuccess(t *testing.T) {
1618
router, module, shutdown := startup.TestServer()
19+
var role *roleModel.Role
20+
var apikey *model.ApiKey
1721
defer shutdown()
1822

19-
apikey, err := module.GetInstance().AuthService.CreateApiKey("test_key", 1, []model.Permission{"test"}, []string{"comment"})
23+
t.Cleanup(func() {
24+
if apikey != nil {
25+
module.GetInstance().AuthService.DeleteApiKey(apikey)
26+
}
27+
})
28+
29+
t.Cleanup(func() {
30+
if role != nil {
31+
module.GetInstance().UserService.DeleteRole(role)
32+
}
33+
})
34+
35+
t.Cleanup(func() {
36+
module.GetInstance().UserService.RemoveUserByEmail("test@abc.com")
37+
})
38+
39+
key, err := utility.GenerateRandomString(6)
40+
if err != nil {
41+
t.Fatalf("could not create key: %v", err)
42+
}
43+
44+
apikey, err = module.GetInstance().AuthService.CreateApiKey(key, 1, []model.Permission{"test"}, []string{"comment"})
2045
if err != nil {
2146
t.Fatalf("could not create apikey: %v", err)
2247
}
2348

49+
role, err = module.GetInstance().UserService.CreateRole(roleModel.RoleCodeLearner)
50+
if err != nil {
51+
t.Fatalf("could not create role: %v", err)
52+
}
53+
2454
body := `{"email":"test@abc.com","password":"123456","name":"test name"}`
2555

2656
req, err := http.NewRequest("POST", "/auth/signup/basic", bytes.NewBuffer([]byte(body)))
2757
if err != nil {
2858
t.Fatalf("could not create request: %v", err)
2959
}
3060
req.Header.Set("Content-Type", "application/json")
31-
req.Header.Set(network.ApiKeyHeader, apikey.Key)
61+
req.Header.Add(network.ApiKeyHeader, apikey.Key)
3262

3363
rr := httptest.NewRecorder()
3464
router.GetEngine().ServeHTTP(rr, req)
@@ -40,13 +70,4 @@ func TestIntegrationAuthController_SignupSuccess(t *testing.T) {
4070
assert.Contains(t, rr.Body.String(), `"roles"`)
4171
assert.Contains(t, rr.Body.String(), `"tokens"`)
4272

43-
_, err = module.GetInstance().AuthService.DeleteApiKey(apikey)
44-
if err != nil {
45-
t.Fatalf("could not delete apikey: %v", err)
46-
}
47-
48-
_, err = module.GetInstance().UserService.RemoveUserByEmail("test@abc.com")
49-
if err != nil {
50-
t.Fatalf("could not delete user: %v", err)
51-
}
5273
}

0 commit comments

Comments
 (0)