refactor
This commit is contained in:
@@ -87,7 +87,7 @@ func TestMain(t *testing.T) {
|
|||||||
log.Fatalf("Error setting environment variable: %v", err)
|
log.Fatalf("Error setting environment variable: %v", err)
|
||||||
}
|
}
|
||||||
config.LoadConfig()
|
config.LoadConfig()
|
||||||
db, err := database.Open("test.db", config.Recipients.AdminEmail)
|
db, err := database.Open("test.db", config.Recipients.AdminEmail, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to create DB: %#v", err)
|
log.Fatalf("Failed to create DB: %#v", err)
|
||||||
}
|
}
|
||||||
@@ -130,10 +130,18 @@ func TestMain(t *testing.T) {
|
|||||||
ZipCode: "12345",
|
ZipCode: "12345",
|
||||||
City: "SampleCity",
|
City: "SampleCity",
|
||||||
Status: constants.ActiveStatus,
|
Status: constants.ActiveStatus,
|
||||||
RoleID: 8,
|
Password: "",
|
||||||
}
|
Notes: "",
|
||||||
|
RoleID: constants.Roles.Admin,
|
||||||
|
Consents: nil,
|
||||||
|
Verifications: nil,
|
||||||
|
Membership: nil,
|
||||||
|
BankAccount: nil,
|
||||||
|
Licence: &models.Licence{
|
||||||
|
Status: constants.UnverifiedStatus,
|
||||||
|
}}
|
||||||
admin.SetPassword("securepassword")
|
admin.SetPassword("securepassword")
|
||||||
database.DB.Create(&admin)
|
admin.Create(db)
|
||||||
validation.SetupValidators(db)
|
validation.SetupValidators(db)
|
||||||
t.Run("userController", func(t *testing.T) {
|
t.Run("userController", func(t *testing.T) {
|
||||||
testUserController(t)
|
testUserController(t)
|
||||||
@@ -275,10 +283,9 @@ func getBaseUser() models.User {
|
|||||||
ZipCode: "25474",
|
ZipCode: "25474",
|
||||||
City: "Hasloh",
|
City: "Hasloh",
|
||||||
Phone: "01738484993",
|
Phone: "01738484993",
|
||||||
BankAccount: models.BankAccount{IBAN: "DE89370400440532013000"},
|
BankAccount: &models.BankAccount{IBAN: "DE89370400440532013000"},
|
||||||
Membership: models.Membership{SubscriptionModel: models.SubscriptionModel{Name: "Basic"}},
|
Membership: &models.Membership{SubscriptionModel: models.SubscriptionModel{Name: "Basic"}},
|
||||||
Licence: nil,
|
Licence: nil,
|
||||||
ProfilePicture: "",
|
|
||||||
Password: "passw@#$#%$!-ord123",
|
Password: "passw@#$#%$!-ord123",
|
||||||
Company: "",
|
Company: "",
|
||||||
RoleID: 1,
|
RoleID: 1,
|
||||||
@@ -295,10 +302,9 @@ func getBaseSupporter() models.User {
|
|||||||
ZipCode: "25474",
|
ZipCode: "25474",
|
||||||
City: "Hasloh",
|
City: "Hasloh",
|
||||||
Phone: "01738484993",
|
Phone: "01738484993",
|
||||||
BankAccount: models.BankAccount{IBAN: "DE89370400440532013000"},
|
BankAccount: &models.BankAccount{IBAN: "DE89370400440532013000"},
|
||||||
Membership: models.Membership{SubscriptionModel: models.SubscriptionModel{Name: "Basic"}},
|
Membership: &models.Membership{SubscriptionModel: models.SubscriptionModel{Name: "Basic"}},
|
||||||
Licence: nil,
|
Licence: nil,
|
||||||
ProfilePicture: "",
|
|
||||||
Password: "passw@#$#%$!-ord123",
|
Password: "passw@#$#%$!-ord123",
|
||||||
Company: "",
|
Company: "",
|
||||||
RoleID: 0,
|
RoleID: 0,
|
||||||
|
|||||||
@@ -31,8 +31,10 @@ func setupTestContext() (*TestContext, error) {
|
|||||||
testEmail := "john.doe@example.com"
|
testEmail := "john.doe@example.com"
|
||||||
user, err := Uc.Service.FromEmail(&testEmail)
|
user, err := Uc.Service.FromEmail(&testEmail)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logger.Error.Printf("error fetching user: %#v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
logger.Error.Printf("found user: %#v", user)
|
||||||
return &TestContext{
|
return &TestContext{
|
||||||
router: gin.Default(),
|
router: gin.Default(),
|
||||||
response: httptest.NewRecorder(),
|
response: httptest.NewRecorder(),
|
||||||
@@ -60,7 +62,6 @@ func testCreatePasswordHandler(t *testing.T) {
|
|||||||
req, _ := http.NewRequest("POST", "/password", bytes.NewBuffer(body))
|
req, _ := http.NewRequest("POST", "/password", bytes.NewBuffer(body))
|
||||||
req.AddCookie(AdminCookie)
|
req.AddCookie(AdminCookie)
|
||||||
tc.router.ServeHTTP(tc.response, req)
|
tc.router.ServeHTTP(tc.response, req)
|
||||||
logger.Error.Printf("Test results for %#v", t.Name())
|
|
||||||
assert.Equal(t, http.StatusAccepted, tc.response.Code)
|
assert.Equal(t, http.StatusAccepted, tc.response.Code)
|
||||||
assert.JSONEq(t, `{"message":"password_change_requested"}`, tc.response.Body.String())
|
assert.JSONEq(t, `{"message":"password_change_requested"}`, tc.response.Body.String())
|
||||||
err = checkEmailDelivery(tc.user, true)
|
err = checkEmailDelivery(tc.user, true)
|
||||||
|
|||||||
@@ -137,9 +137,7 @@ func (uc *UserController) DeleteUser(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type deleteData struct {
|
type deleteData struct {
|
||||||
User struct {
|
|
||||||
ID uint `json:"id" binding:"required,numeric"`
|
ID uint `json:"id" binding:"required,numeric"`
|
||||||
} `json:"user"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var data deleteData
|
var data deleteData
|
||||||
@@ -148,13 +146,13 @@ func (uc *UserController) DeleteUser(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !requestUser.HasPrivilege(constants.Priviliges.Delete) && data.User.ID != requestUser.ID {
|
if !requestUser.HasPrivilege(constants.Priviliges.Delete) && data.ID != requestUser.ID {
|
||||||
utils.RespondWithError(c, errors.ErrNotAuthorized, "Not allowed to delete user", http.StatusForbidden, errors.Responses.Fields.User, errors.Responses.Keys.Unauthorized)
|
utils.RespondWithError(c, errors.ErrNotAuthorized, "Not allowed to delete user", http.StatusForbidden, errors.Responses.Fields.User, errors.Responses.Keys.Unauthorized)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Error.Printf("Deleting user: %v", data.User)
|
logger.Error.Printf("Deleting user: %v", data)
|
||||||
if err := uc.Service.Delete(&data.User.ID); err != nil {
|
if err := uc.Service.Delete(&data.ID); err != nil {
|
||||||
utils.HandleDeleteUserError(c, err)
|
utils.HandleDeleteUserError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -291,12 +289,14 @@ func (uc *UserController) RegisterUser(c *gin.Context) {
|
|||||||
LastName: regData.User.LastName,
|
LastName: regData.User.LastName,
|
||||||
Email: regData.User.Email,
|
Email: regData.User.Email,
|
||||||
ConsentType: "TermsOfService",
|
ConsentType: "TermsOfService",
|
||||||
|
UserID: regData.User.ID,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
FirstName: regData.User.FirstName,
|
FirstName: regData.User.FirstName,
|
||||||
LastName: regData.User.LastName,
|
LastName: regData.User.LastName,
|
||||||
Email: regData.User.Email,
|
Email: regData.User.Email,
|
||||||
ConsentType: "Privacy",
|
ConsentType: "Privacy",
|
||||||
|
UserID: regData.User.ID,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ func testUserController(t *testing.T) {
|
|||||||
database.DB.Model(&models.User{}).Where("email = ?", "john.doe@example.com").Update("status", constants.ActiveStatus)
|
database.DB.Model(&models.User{}).Where("email = ?", "john.doe@example.com").Update("status", constants.ActiveStatus)
|
||||||
loginEmail := testLoginHandler(t)
|
loginEmail := testLoginHandler(t)
|
||||||
testCurrentUserHandler(t, loginEmail)
|
testCurrentUserHandler(t, loginEmail)
|
||||||
|
|
||||||
// creating a admin cookie
|
// creating a admin cookie
|
||||||
c, w, _ := GetMockedJSONContext([]byte(`{
|
c, w, _ := GetMockedJSONContext([]byte(`{
|
||||||
"email": "admin@example.com",
|
"email": "admin@example.com",
|
||||||
@@ -402,7 +401,6 @@ func validateUser(assert bool, wantDBData map[string]interface{}) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error in database ops: %#v", err)
|
return fmt.Errorf("Error in database ops: %#v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if assert != (len(*users) != 0) {
|
if assert != (len(*users) != 0) {
|
||||||
return fmt.Errorf("User entry query didn't met expectation: %v != %#v", assert, *users)
|
return fmt.Errorf("User entry query didn't met expectation: %v != %#v", assert, *users)
|
||||||
}
|
}
|
||||||
@@ -575,7 +573,7 @@ func testUpdateUser(t *testing.T) {
|
|||||||
var licenceRepo repositories.LicenceInterface = &repositories.LicenceRepository{}
|
var licenceRepo repositories.LicenceInterface = &repositories.LicenceRepository{}
|
||||||
category, err := licenceRepo.FindCategoryByName("B")
|
category, err := licenceRepo.FindCategoryByName("B")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
u.Licence.Categories = []models.Category{category}
|
u.Licence.Categories = []*models.Category{&category}
|
||||||
},
|
},
|
||||||
expectedStatus: http.StatusAccepted,
|
expectedStatus: http.StatusAccepted,
|
||||||
},
|
},
|
||||||
@@ -594,7 +592,7 @@ func testUpdateUser(t *testing.T) {
|
|||||||
category, err := licenceRepo.FindCategoryByName("A")
|
category, err := licenceRepo.FindCategoryByName("A")
|
||||||
category2, err := licenceRepo.FindCategoryByName("BE")
|
category2, err := licenceRepo.FindCategoryByName("BE")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
u.Licence.Categories = []models.Category{category, category2}
|
u.Licence.Categories = []*models.Category{&category, &category2}
|
||||||
},
|
},
|
||||||
expectedStatus: http.StatusAccepted,
|
expectedStatus: http.StatusAccepted,
|
||||||
},
|
},
|
||||||
@@ -612,7 +610,7 @@ func testUpdateUser(t *testing.T) {
|
|||||||
var licenceRepo repositories.LicenceInterface = &repositories.LicenceRepository{}
|
var licenceRepo repositories.LicenceInterface = &repositories.LicenceRepository{}
|
||||||
category, err := licenceRepo.FindCategoryByName("A")
|
category, err := licenceRepo.FindCategoryByName("A")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
u.Licence.Categories = []models.Category{category}
|
u.Licence.Categories = []*models.Category{&category}
|
||||||
},
|
},
|
||||||
expectedStatus: http.StatusAccepted,
|
expectedStatus: http.StatusAccepted,
|
||||||
},
|
},
|
||||||
@@ -627,7 +625,7 @@ func testUpdateUser(t *testing.T) {
|
|||||||
u.LastName = "Doe Updated"
|
u.LastName = "Doe Updated"
|
||||||
u.Phone = "01738484994"
|
u.Phone = "01738484994"
|
||||||
u.Licence.Number = "B072RRE2I50"
|
u.Licence.Number = "B072RRE2I50"
|
||||||
u.Licence.Categories = []models.Category{}
|
u.Licence.Categories = []*models.Category{}
|
||||||
},
|
},
|
||||||
expectedStatus: http.StatusAccepted,
|
expectedStatus: http.StatusAccepted,
|
||||||
},
|
},
|
||||||
@@ -806,11 +804,9 @@ func testUpdateUser(t *testing.T) {
|
|||||||
assert.Equal(t, updatedUser.Company, updatedUserFromDB.Company, "Company mismatch")
|
assert.Equal(t, updatedUser.Company, updatedUserFromDB.Company, "Company mismatch")
|
||||||
assert.Equal(t, updatedUser.Phone, updatedUserFromDB.Phone, "Phone mismatch")
|
assert.Equal(t, updatedUser.Phone, updatedUserFromDB.Phone, "Phone mismatch")
|
||||||
assert.Equal(t, updatedUser.Notes, updatedUserFromDB.Notes, "Notes mismatch")
|
assert.Equal(t, updatedUser.Notes, updatedUserFromDB.Notes, "Notes mismatch")
|
||||||
assert.Equal(t, updatedUser.ProfilePicture, updatedUserFromDB.ProfilePicture, "ProfilePicture mismatch")
|
|
||||||
assert.Equal(t, updatedUser.Address, updatedUserFromDB.Address, "Address mismatch")
|
assert.Equal(t, updatedUser.Address, updatedUserFromDB.Address, "Address mismatch")
|
||||||
assert.Equal(t, updatedUser.ZipCode, updatedUserFromDB.ZipCode, "ZipCode mismatch")
|
assert.Equal(t, updatedUser.ZipCode, updatedUserFromDB.ZipCode, "ZipCode mismatch")
|
||||||
assert.Equal(t, updatedUser.City, updatedUserFromDB.City, "City mismatch")
|
assert.Equal(t, updatedUser.City, updatedUserFromDB.City, "City mismatch")
|
||||||
assert.Equal(t, updatedUser.PaymentStatus, updatedUserFromDB.PaymentStatus, "PaymentStatus mismatch")
|
|
||||||
assert.Equal(t, updatedUser.Status, updatedUserFromDB.Status, "Status mismatch")
|
assert.Equal(t, updatedUser.Status, updatedUserFromDB.Status, "Status mismatch")
|
||||||
assert.Equal(t, updatedUser.RoleID, updatedUserFromDB.RoleID, "RoleID mismatch")
|
assert.Equal(t, updatedUser.RoleID, updatedUserFromDB.RoleID, "RoleID mismatch")
|
||||||
|
|
||||||
@@ -839,8 +835,17 @@ func testUpdateUser(t *testing.T) {
|
|||||||
assert.Equal(t, updatedUser.Licence.IssuingCountry, updatedUserFromDB.Licence.IssuingCountry, "Licence.IssuingCountry mismatch")
|
assert.Equal(t, updatedUser.Licence.IssuingCountry, updatedUserFromDB.Licence.IssuingCountry, "Licence.IssuingCountry mismatch")
|
||||||
}
|
}
|
||||||
|
|
||||||
// For slices or more complex nested structures, you might want to use deep equality checks
|
if len(updatedUser.Consents) > 0 {
|
||||||
assert.ElementsMatch(t, updatedUser.Consents, updatedUserFromDB.Consents, "Consents mismatch")
|
for i := range updatedUser.Consents {
|
||||||
|
assert.Equal(t, updatedUser.Consents[i].ConsentType, updatedUserFromDB.Consents[i].ConsentType, "ConsentType mismatch at index %d", i)
|
||||||
|
assert.Equal(t, updatedUser.Consents[i].Email, updatedUserFromDB.Consents[i].Email, "ConsentEmail mismatch at index %d", i)
|
||||||
|
assert.Equal(t, updatedUser.Consents[i].FirstName, updatedUserFromDB.Consents[i].FirstName, "ConsentFirstName mismatch at index %d", i)
|
||||||
|
assert.Equal(t, updatedUser.Consents[i].LastName, updatedUserFromDB.Consents[i].LastName, "ConsentLastName mismatch at index %d", i)
|
||||||
|
assert.Equal(t, updatedUser.Consents[i].UserID, updatedUserFromDB.Consents[i].UserID, "Consent UserId mismatch at index %d", i)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
assert.Emptyf(t, updatedUserFromDB.Licence.Categories, "Categories aren't empty when they should")
|
||||||
|
}
|
||||||
if len(updatedUser.Licence.Categories) > 0 {
|
if len(updatedUser.Licence.Categories) > 0 {
|
||||||
for i := range updatedUser.Licence.Categories {
|
for i := range updatedUser.Licence.Categories {
|
||||||
assert.Equal(t, updatedUser.Licence.Categories[i].Name, updatedUserFromDB.Licence.Categories[i].Name, "Category Category mismatch at index %d", i)
|
assert.Equal(t, updatedUser.Licence.Categories[i].Name, updatedUserFromDB.Licence.Categories[i].Name, "Category Category mismatch at index %d", i)
|
||||||
@@ -1272,7 +1277,7 @@ func getTestUsers() []RegisterUserTest {
|
|||||||
{
|
{
|
||||||
Name: "Correct Licence number, should pass",
|
Name: "Correct Licence number, should pass",
|
||||||
WantResponse: http.StatusCreated,
|
WantResponse: http.StatusCreated,
|
||||||
WantDBData: map[string]interface{}{"email": "john.correctLicenceNumber@example.com"},
|
WantDBData: map[string]interface{}{"email": "john.correctlicencenumber@example.com"},
|
||||||
Assert: true,
|
Assert: true,
|
||||||
Input: GenerateInputJSON(customizeInput(func(user models.User) models.User {
|
Input: GenerateInputJSON(customizeInput(func(user models.User) models.User {
|
||||||
user.Email = "john.correctLicenceNumber@example.com"
|
user.Email = "john.correctLicenceNumber@example.com"
|
||||||
|
|||||||
Reference in New Issue
Block a user