Commit graph

457 commits

Author SHA1 Message Date
Sonja Happ
5855fccbe3 Fix documentation of endpoints for swaggo 2019-09-04 16:48:24 +02:00
Sonja Happ
3a2cd79fd0 Revision of error messages for middleware 2019-09-04 16:47:46 +02:00
Sonja Happ
2772bde5ee - Modify scenario testing
- Add scenario validators
- Clean up responses and serializes with respect to scenario
- Fix error handling and responses of scenario endpoints
2019-09-04 16:31:20 +02:00
Sonja Happ
46e84fc758 return the gorm error in case user was not found 2019-09-04 16:18:36 +02:00
Sonja Happ
0d389e9cd5 start each user test function with an empty DB containing only the admin user 2019-09-04 09:05:19 +02:00
Sonja Happ
6221f7d851 user testing: fix responses of successful queries 2019-09-03 16:59:30 +02:00
Sonja Happ
bddbfc028d fix swaggo documentation of user endpoints 2019-09-03 12:03:47 +02:00
Sonja Happ
9c7bb228d3 add 2 TODOs in scenario get endpoints 2019-09-03 08:59:06 +02:00
smavros
5ac7b5b348 Adds test for user's not allowed actions 2019-08-30 18:19:10 +02:00
smavros
67e4043071 Extends test for GET /users auth as role=User 2019-08-30 15:59:59 +02:00
smavros
f4a15e914e Merge branch 'master' into test-user-endpoints 2019-08-30 15:47:54 +02:00
smavros
68feed0dac Small improvements in user endpoints 2019-08-25 21:52:36 +02:00
smavros
9e01b54307 Improves TestAddUser by testing also GET method 2019-08-25 21:24:55 +02:00
smavros
6959e65bce Adds test for deleting user 2019-08-25 21:03:49 +02:00
smavros
2c087e80e7 Adds test for invalid user update 2019-08-25 20:55:44 +02:00
smavros
4d79f06aba Renaming - Uses only one modRequest variable in user test 2019-08-25 20:02:35 +02:00
smavros
d6cc9ed224 Fixes bug in modify non-Admin user fields 2019-08-25 19:59:47 +02:00
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
ac54500ed7 Removes ResponseMsgUsers from scenario test 2019-08-13 17:48:11 +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
299e314b88 Removes UsersSerializer from scenario test 2019-08-13 16:45:30 +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
bbe133655c Fixes scenario_test that is using NewTestEndpoint() 2019-08-11 22:48:21 +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
smavros
a1b8d93263 Scenario test uses User serializer instead of UserResponse WIP 2019-07-31 11:34:40 +02:00
smavros
4c0d74a4a8 Adds new function for testing endpoints WIP:
- NewTestEndpoint() should replace TestEndpoint() since it is
    returning an error in case that the code or the response is not
    matching the expected one. The assertion __must__ be executed in the
    body of the actual test (of the corresponding package) so the
    printed error message can include the right number of line and the
    file where the assertion failed.
    - The function is used now only in package scenario tests.
2019-07-31 11:30:23 +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