(t *testing.T)
| 3211 | } |
| 3212 | |
| 3213 | func TestRoleUpdatedAtField(t *testing.T) { |
| 3214 | rt := NewRestTester(t, &RestTesterConfig{ |
| 3215 | CustomTestBucket: base.GetTestBucket(t), |
| 3216 | PersistentConfig: true, |
| 3217 | }) |
| 3218 | defer rt.Close() |
| 3219 | |
| 3220 | dbConfig := rt.NewDbConfig() |
| 3221 | RequireStatus(t, rt.CreateDatabase("db1", dbConfig), http.StatusCreated) |
| 3222 | |
| 3223 | resp := rt.SendAdminRequest(http.MethodPost, "/db1/_role/", `{"name":"role1","admin_channels":["test"]}`) |
| 3224 | RequireStatus(t, resp, http.StatusCreated) |
| 3225 | |
| 3226 | ds := rt.MetadataStore() |
| 3227 | metaKeys := rt.GetDatabase().MetadataKeys |
| 3228 | roleKey := metaKeys.RoleKey("role1") |
| 3229 | var user map[string]interface{} |
| 3230 | _, err := ds.Get(roleKey, &user) |
| 3231 | require.NoError(t, err) |
| 3232 | |
| 3233 | // Check that the user has an updatedAt field |
| 3234 | require.NotNil(t, user["updated_at"]) |
| 3235 | currTimeStr := user["updated_at"].(string) |
| 3236 | currTime, err := time.Parse(time.RFC3339, currTimeStr) |
| 3237 | require.NoError(t, err) |
| 3238 | require.NotNil(t, user["created_at"]) |
| 3239 | currTimeCreatedStr := user["created_at"].(string) |
| 3240 | timeCreated, err := time.Parse(time.RFC3339, currTimeCreatedStr) |
| 3241 | require.NoError(t, err) |
| 3242 | |
| 3243 | // avoid flake where update at seems to be the same (possibly running to fast) |
| 3244 | time.Sleep(500 * time.Nanosecond) |
| 3245 | |
| 3246 | resp = rt.SendAdminRequest(http.MethodPut, "/db1/_role/role1", `{"name":"role1","admin_channels":["ABC"]}`) |
| 3247 | RequireStatus(t, resp, http.StatusOK) |
| 3248 | |
| 3249 | user = map[string]interface{}{} |
| 3250 | _, err = ds.Get(roleKey, &user) |
| 3251 | require.NoError(t, err) |
| 3252 | newTimeStr := user["updated_at"].(string) |
| 3253 | newTime, err := time.Parse(time.RFC3339, newTimeStr) |
| 3254 | require.NoError(t, err) |
| 3255 | newCreatedStr := user["created_at"].(string) |
| 3256 | newCreated, err := time.Parse(time.RFC3339, newCreatedStr) |
| 3257 | require.NoError(t, err) |
| 3258 | |
| 3259 | assert.Greater(t, newTime.UnixNano(), currTime.UnixNano()) |
| 3260 | assert.Equal(t, timeCreated.UnixNano(), newCreated.UnixNano()) |
| 3261 | } |
| 3262 | |
| 3263 | func TestServerUUIDRuntimeServerConfig(t *testing.T) { |
| 3264 | testCases := []struct { |
nothing calls this directly
no test coverage detected