Commit graph

181 commits

Author SHA1 Message Date
smavros
5c820982e4 Adds test for user who modifies his credentials 2019-08-25 19:58:56 +02:00
smavros
c00d0e0422 Uses GetResponseID() instead of LengthOfResponse() in user test 2019-08-25 17:05:00 +02:00
smavros
e0746f112f Minor changes in modify user test 2019-08-23 13:05:31 +02:00
smavros
0e0936a736 Adds test for user endpoint:
- For getting all the users
    - For modifying a user as Admin
    - For adding a user
2019-08-19 11:44:08 +02:00
smavros
02f2156c1e Changes response of POST,PUT and DELETE:
For being able to easily debug and test the checkpoints which are
    adding, modifying or deleting a user the response should be the
    affected user object. Not only its ID.
2019-08-18 17:17:16 +02:00
smavros
94ea3c4ebf Breaks user test into different testing functions 2019-08-15 18:16:30 +02:00
smavros
c2429394ed Renames VisitorAuthenticate() to RegisterAuthenticate() 2019-08-15 14:52:19 +02:00
smavros
426b834ea5 Modifies tests for accepting {"id":$userID} response 2019-08-15 14:37:13 +02:00
smavros
8ce554b6d7 Modifies user/ endpoint:
Functions `addUser()`, `updateUser()` and `deleteUser()` now return
    a body of `{ "id": $userID }`.
2019-08-15 14:34:35 +02:00
smavros
1e4a2ee7cb Adds test for PUT /user/$ID endpoint 2019-08-15 00:36:46 +02:00
smavros
7529f4803f Improves PUT /user/$ID {$updatedUser} endpoint:
- Improves the semantics and scope of the updatedUser() by moving
    operations in updateUserRequest's updatedUser() method.
    - Fixes the marshaling of the updateUserRequest by renaming and
    embedding the already existing type.
    - Fixes bug of password hashing by using `omitempty` tags in the
    update struct.
2019-08-15 00:36:03 +02:00
smavros
86870e3075 Adds test for POST /user 2019-08-13 19:30:21 +02:00
smavros
59a37bf601 Removes Credentials type from common/models.go:
Every test will fail except from the user's package since it is the
    only one using the new Request type.
2019-08-13 19:21:39 +02:00
smavros
b6a269bdeb Deprecates ResponseMsgUses. Introduces common/requests.go 2019-08-13 17:41:04 +02:00
smavros
ae2737571f Adds test for GET /user/:ID 2019-08-13 16:56:10 +02:00
smavros
74b27f7525 Remove redundant structs and methods:
UserSerializer, UsersSerializer, AuthResponse, UserResponse.
2019-08-13 16:40:54 +02:00
smavros
42f473cde0 Fix bug of User marshaling:
Instead of using the json.Marshal() we can user `gin.H` type of the
    response that will be passed through an XMLMarshaler. In that case
    we don't even need the responses structs!!
2019-08-13 16:20:58 +02:00
smavros
28d81e52c2 Derpecates UsersSerializer() from user endpoints 2019-08-13 16:17:37 +02:00
smavros
50b1902bf3 Deprecates common.UserSerializer() from user endpoints 2019-08-13 15:49:33 +02:00
smavros
76658c3ed4 Bug fix (read that commit message!):
The problem started with an internal error in the database (HTTP
    code 500, pq: duplicate key value) while trying to POST at /api/user
    with body {"user":{newUserObject}} to the backend, that already had
    three users User0 (Admin), UserA and UserB. Every test was
    succeeding.

    Eventually, the source of the problem was the initialization of the
    field `ID` (primary key) of the embedded struct `Model` in model
    `User`. When the `User` global variables User0, UserA and UserB
    were created in `common/testdata.go` the `Model.ID` field was set
    manually to the values 1, 2 and 3 respectively. This ofc was
    unnecessary but those variables were used for comparison with the
    relevant responses.

    When gorm (or postgres, not entirely sure) have a new variable of a
    model type, it will check if its primary key is zero (which means is
    uninitialized) and will set it to the last used value +1. That means
    that the new user that we were trying to insert in the DB got the
    primary key value 1. This value was already in use by the User0 so
    the DB refused to add the new user since there was a duplicate
    primary key value. That's why we were getting an postgre's error and
    HTTP 500.

    Hence to fix the bug this commit:

    - Removes `User.ID` initialization from `common/testdata.go`

    - Omits the `User.ID` from the json marshaler by setting the struct
    json tag to `json:"-"`. This is done because the request body is
    compared to the response *after* is serialized by a call to
    json.Marshal(). Since the `User.ID` is always uninitialized (value
    0) the jsondiff.Compare() will always return a "NoMatch".

    - Includes check for return of "SupersetMatch" in
    NewTestEndpoint()'s jsondiff.Compare() call. Since the `User.ID` is
    not serialized the json representation of the request will not
    include an "id" key. On the contrary, the response *has* an "id" key
    so it will always going to be a superset json object of the
    serialized request.

    - Modifies the validator's data struct to match the form of the
    request ({"modelKey":{requestBody}}) by adding an intermediate
    struct with the proper tag `json:"user"`.
2019-08-13 01:45:24 +02:00
smavros
6aee1a7aca Improves NewAuthenticateForTest():
- As NewTestEndpoint() the credentials are passed as interface{} and
    marsaling is happening inside the function.
    - Add check for ignored error from http.NewRequest()
2019-08-11 20:03:23 +02:00
smavros
41bb54e933 Modifies NewTestEndpoint() and user_test:
Instead of marshaling the expected response in the test function the
    marshaling happens inside the NewTestEndpoint() where is passed as
    interface{}.
2019-08-11 19:41:48 +02:00
smavros
dbd8d7ddeb Adds DummyOnlyAdminDB() for testing with empty DB 2019-08-11 18:10:33 +02:00
smavros
8e185ecba4 Adds NewAuthenticateForTest() in common/utilities.go:
- The function must return the token and an error (string, error).
    In case of an error the token is going to be an empty string. The
    assertion for the error __must__ be executed in the body of the
    test. The utility functions __must not__ panic. All of the tests
    must use this function in the future.
2019-08-04 20:08:27 +02:00
smavros
e2430cadef Changes testing function in \users test file 2019-08-04 19:54:09 +02:00
Sonja Happ
f84e6a1dda Fix in getUser endpoint for role User 2019-07-31 14:03:43 +02:00
Sonja Happ
a4a6ab0770 rename user validators file 2019-07-31 09:37:51 +02:00
smavros
cf69e59a5f Modifies testdata setup:
- Decorates User model with json tags for marshaling.
    - Introduces Model type same as gorm.Model with additional json tags
    for marshaling.
    - Modifies ResponseMsgUsers type.
    - Modifies the testdata for the users by including initializer for
    the Mode.ID field.
    - The scenario test fails for those changes
2019-07-30 20:31:59 +02:00
smavros
a283d32dff Adds first users endpoint test 2019-07-30 18:03:20 +02:00
smavros
e6c8fff397 Merge remote-tracking branch 'origin/master' into user-validators 2019-07-26 15:29:45 +02:00
smavros
be6556612c Only Admins can update the role of a user 2019-07-25 19:23:31 +02:00
smavros
8b7e8fb2bb Adds validator for user update 2019-07-25 18:58:28 +02:00
smavros
55be6d7e9f Adds source file for user validators:
- Adds validate() method for loginRequest and addUserRequest
    - Simplifies user endpoints validation
2019-07-25 17:46:46 +02:00
Sonja Happ
e9ed836ba3 fix typo in registration of user endpoints 2019-07-23 17:19:42 +02:00
Sonja Happ
9faec2e805 return user in auth response 2019-07-18 15:25:06 +02:00
Sonja Happ
f0be5cce00 file renaming 2019-07-18 13:25:41 +02:00
Sonja Happ
c33bcd0202 Fix password validation to work with testing DB entries 2019-07-04 15:50:48 +02:00
Sonja Happ
7edb27de2e Merge branch 'user-validators'
# Conflicts:
#	go.mod
#	go.sum
#	routes/user/userEndpoints.go
#	routes/user/userMethods.go
2019-07-04 15:39:41 +02:00
Sonja Happ
9bc9dc6b5d user: add check of for admin role if role of user shall be modified, some small corrections of responses, input forms, and parameter spelling 2019-07-04 11:37:00 +02:00
smavros
8d9f2d8940 Adds create and update UserRequests for validation 2019-07-03 13:44:09 +02:00
smavros
c68510fa99 Adds validation of login request:
- Renames type Credentials to loginRequest
2019-06-12 16:04:15 +02:00
smavros
b74b5f3a44 Fixes bug in getUsers(). Adds helper funnction. 2019-06-10 16:47:46 +02:00
smavros
8e2bfe3f47 Changes in getUsers for GET /users endpoint:
- User role can only update a user
2019-06-10 13:59:29 +02:00
Sonja Happ
4806583b1f Merge branch 'authentication'
# Conflicts:
#	common/models.go
#	common/utilities.go
#	routes/user/userEndpoints.go
2019-06-05 10:42:49 +02:00
smavros
1b39f2fd83 Adds global constant strings for Context custom variables 2019-06-05 10:03:12 +02:00
smavros
83444505b0 Implements updateUser() for user endpoint WIP
- Improves user.update() method
2019-06-04 21:56:28 +02:00
smavros
e4c8fb9825 Renames IsActionAllowed() to ValidateRole() 2019-06-04 20:33:27 +02:00
smavros
683ea46b15 Adds role validation in other user endpoints 2019-06-04 20:28:15 +02:00
smavros
5d3bb4c632 Improves actions mechanism in common package
- Typedefs the name of a model (ModelName) and the CRUD operations
    (CRUD).
    - Defines constants for models's names and the 4 CRUD operations
    - Changes the corresponding functions that need to validate the role
2019-06-04 20:22:09 +02:00
smavros
1a1a3c1876 Adds IsActionAllowed() in common utilities
- Is used only in deleteUser handler function for now
2019-06-04 18:03:47 +02:00