(t *testing.T)
| 3160 | } |
| 3161 | |
| 3162 | func TestUserUpdatedAtField(t *testing.T) { |
| 3163 | rt := NewRestTester(t, &RestTesterConfig{ |
| 3164 | CustomTestBucket: base.GetTestBucket(t), |
| 3165 | PersistentConfig: true, |
| 3166 | }) |
| 3167 | defer rt.Close() |
| 3168 | |
| 3169 | dbConfig := rt.NewDbConfig() |
| 3170 | RequireStatus(t, rt.CreateDatabase("db1", dbConfig), http.StatusCreated) |
| 3171 | |
| 3172 | metaKeys := rt.GetDatabase().MetadataKeys |
| 3173 | |
| 3174 | resp := rt.SendAdminRequest(http.MethodPost, "/db1/_user/", `{"name":"user1","password":"password"}`) |
| 3175 | RequireStatus(t, resp, http.StatusCreated) |
| 3176 | |
| 3177 | ds := rt.MetadataStore() |
| 3178 | var user map[string]interface{} |
| 3179 | userKey := metaKeys.UserKey("user1") |
| 3180 | _, err := ds.Get(userKey, &user) |
| 3181 | require.NoError(t, err) |
| 3182 | |
| 3183 | // Check that the user has an updatedAt field |
| 3184 | require.NotNil(t, user["updated_at"]) |
| 3185 | currTimeStr := user["updated_at"].(string) |
| 3186 | currTime, err := time.Parse(time.RFC3339, currTimeStr) |
| 3187 | require.NoError(t, err) |
| 3188 | require.NotNil(t, user["created_at"]) |
| 3189 | currTimeCreatedStr := user["created_at"].(string) |
| 3190 | timeCreated, err := time.Parse(time.RFC3339, currTimeCreatedStr) |
| 3191 | require.NoError(t, err) |
| 3192 | |
| 3193 | // avoid flake where update at seems to be the same (possibly running to fast) |
| 3194 | time.Sleep(500 * time.Nanosecond) |
| 3195 | |
| 3196 | resp = rt.SendAdminRequest(http.MethodPut, "/db1/_user/user1", `{"name":"user1","password":"password1"}`) |
| 3197 | RequireStatus(t, resp, http.StatusOK) |
| 3198 | |
| 3199 | user = map[string]interface{}{} |
| 3200 | _, err = ds.Get(userKey, &user) |
| 3201 | require.NoError(t, err) |
| 3202 | newTimeStr := user["updated_at"].(string) |
| 3203 | newTime, err := time.Parse(time.RFC3339, newTimeStr) |
| 3204 | require.NoError(t, err) |
| 3205 | newCreatedStr := user["created_at"].(string) |
| 3206 | newCreated, err := time.Parse(time.RFC3339, newCreatedStr) |
| 3207 | require.NoError(t, err) |
| 3208 | |
| 3209 | assert.Greater(t, newTime.UnixNano(), currTime.UnixNano()) |
| 3210 | assert.Equal(t, timeCreated.UnixNano(), newCreated.UnixNano()) |
| 3211 | } |
| 3212 | |
| 3213 | func TestRoleUpdatedAtField(t *testing.T) { |
| 3214 | rt := NewRestTester(t, &RestTesterConfig{ |
nothing calls this directly
no test coverage detected