Skip to content

Commit 1a9fafe

Browse files
author
Shibbir Ahmed
committed
Integrated PasswordDelivery Service in the UserRegistrationService
1 parent df29a44 commit 1a9fafe

File tree

7 files changed

+38
-16
lines changed

7 files changed

+38
-16
lines changed

handlers/login_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ func TestLoginUser(t *testing.T) {
1818
gin.SetMode(gin.TestMode)
1919
t.Run("successful login", func(t *testing.T) {
2020
mockDBService := new(mocks.MockDatabaseOperationService)
21-
mockRegService := services.NewUserRegistrationService(mockDBService)
21+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
22+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
2223
mockLoginService := services.NewUserLoginService(mockDBService)
2324

2425
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
@@ -57,7 +58,8 @@ func TestLoginUser(t *testing.T) {
5758

5859
t.Run("bad request with invalid JSON", func(t *testing.T) {
5960
mockDBService := new(mocks.MockDatabaseOperationService)
60-
mockRegService := services.NewUserRegistrationService(mockDBService)
61+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
62+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
6163
mockLoginService := services.NewUserLoginService(mockDBService)
6264
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
6365

@@ -95,7 +97,8 @@ func TestLoginUser(t *testing.T) {
9597

9698
t.Run("Invalid Email format Error Test", func(t *testing.T) {
9799
mockDBService := new(mocks.MockDatabaseOperationService)
98-
mockRegService := services.NewUserRegistrationService(mockDBService)
100+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
101+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
99102
mockLoginService := services.NewUserLoginService(mockDBService)
100103
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
101104

@@ -129,7 +132,8 @@ func TestLoginUser(t *testing.T) {
129132

130133
t.Run("Unauthorized Login Test", func(t *testing.T) {
131134
mockDBService := new(mocks.MockDatabaseOperationService)
132-
mockRegService := services.NewUserRegistrationService(mockDBService)
135+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
136+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
133137
mockLoginService := services.NewUserLoginService(mockDBService)
134138
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
135139

handlers/registration_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import (
1919
// TestRegisterUser_Success tests the successful registration flow.
2020
func TestRegisterUser_Success(t *testing.T) {
2121
mockDBService := new(mocks.MockDatabaseOperationService)
22-
mockRegService := services.NewUserRegistrationService(mockDBService)
22+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
23+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
2324
mockLoginService := services.NewUserLoginService(mockDBService)
2425
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
2526

@@ -54,7 +55,8 @@ func TestRegisterUser_Success(t *testing.T) {
5455
// TestRegisterUser_InternalServerError tests the case where the CreateUser method fails.
5556
func TestRegisterUser_InternalServerError(t *testing.T) {
5657
mockDBService := new(mocks.MockDatabaseOperationService)
57-
mockRegService := services.NewUserRegistrationService(mockDBService)
58+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
59+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
5860
mockLoginService := services.NewUserLoginService(mockDBService)
5961
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
6062

@@ -88,7 +90,8 @@ func TestRegisterUser_InternalServerError(t *testing.T) {
8890

8991
func TestRegisterUser_InvalidJson(t *testing.T) {
9092
mockDBService := new(mocks.MockDatabaseOperationService)
91-
mockRegService := services.NewUserRegistrationService(mockDBService)
93+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
94+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
9295
mockLoginService := services.NewUserLoginService(mockDBService)
9396
handler := &UserHandler{userRegistrationService: *mockRegService, userLoginService: *mockLoginService}
9497

handlers/user_handler_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010

1111
func TestNewUserHandler(t *testing.T) {
1212
mockDBService := new(mocks.MockDatabaseOperationService)
13-
mockRegService := services.NewUserRegistrationService(mockDBService)
13+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
14+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
1415
mockLoginService := services.NewUserLoginService(mockDBService)
1516
handler := NewUserHandler(*mockRegService, *mockLoginService)
1617

initializer/initializer.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import (
1414

1515
func InitializeServices(db *gorm.DB) (*services.UserRegistrationService, *services.UserLoginService) {
1616
databaseOperationService := services.NewDatabaseOperationService(db)
17-
userRegistrationService := services.NewUserRegistrationService(databaseOperationService)
17+
passwordDeliveryService, _ := InitializePasswordDeliveryService()
18+
userRegistrationService := services.NewUserRegistrationService(passwordDeliveryService, databaseOperationService)
1819
userLoginService := services.NewUserLoginService(databaseOperationService)
1920
return userRegistrationService, userLoginService
2021
}

routes/route_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import (
1919
func TestConfigureRouteEndPoints(t *testing.T) {
2020

2121
mockDBService := new(mocks.MockDatabaseOperationService)
22-
mockRegService := services.NewUserRegistrationService(mockDBService)
22+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
23+
mockRegService := services.NewUserRegistrationService(mockPasswordDeliveryService, mockDBService)
2324
mockLoginService := services.NewUserLoginService(mockDBService)
2425
userHandler := handlers.NewUserHandler(*mockRegService, *mockLoginService)
2526

services/user_registration_service.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ import (
99
)
1010

1111
type UserRegistrationService struct {
12-
dbService IDatabaseOperationService
12+
passwordDeliveryService PasswordDeliveryService
13+
dbService IDatabaseOperationService
1314
}
1415

15-
func NewUserRegistrationService(dbService IDatabaseOperationService) *UserRegistrationService {
16+
func NewUserRegistrationService(passwordDeliveryService PasswordDeliveryService, dbService IDatabaseOperationService) *UserRegistrationService {
1617
return &UserRegistrationService{
17-
dbService: dbService,
18+
passwordDeliveryService: passwordDeliveryService,
19+
dbService: dbService,
1820
}
1921
}
2022

@@ -35,5 +37,13 @@ func (s *UserRegistrationService) RegisterUser(input models.UserRegitrationReque
3537
if err := s.dbService.CreateUser(&user, &userDetail); err != nil {
3638
return errors.New("error while registering user")
3739
}
38-
return nil
40+
41+
userCredentials := models.UserCredentials{
42+
Email: input.Email,
43+
FirstName: input.FirstName,
44+
MiddleName: input.MiddleName,
45+
LastName: input.LastName,
46+
Password: generatedPassword,
47+
}
48+
return s.passwordDeliveryService.SendPassword(userCredentials)
3949
}

services/user_registration_service_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ func TestRegisterUser_Success(t *testing.T) {
2626
mockDB.On("CreateUser", mock.AnythingOfType("*models.User"), mock.AnythingOfType("*models.UserDetail")).Return(nil)
2727

2828
// Create the service with the mock database
29-
service := NewUserRegistrationService(mockDB)
29+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
30+
service := NewUserRegistrationService(mockPasswordDeliveryService, mockDB)
3031

3132
// Call the RegisterUser method
3233
err := service.RegisterUser(input)
@@ -52,7 +53,8 @@ func TestRegisterUser_FailOnCreateUser(t *testing.T) {
5253
mockDB.On("CreateUser", mock.AnythingOfType("*models.User"), mock.AnythingOfType("*models.UserDetail")).Return(errors.New("database error"))
5354

5455
// Create the service with the mock database
55-
service := NewUserRegistrationService(mockDB)
56+
mockPasswordDeliveryService := &mocks.MockPasswordDeliveryService{ShouldFail: false}
57+
service := NewUserRegistrationService(mockPasswordDeliveryService, mockDB)
5658

5759
// Call the RegisterUser method
5860
err := service.RegisterUser(input)

0 commit comments

Comments
 (0)