public async void PutUserPreferencesAsync_ValidAuthInvalidModel_ReturnsBadRequest() { // Given var databaseName = Guid.NewGuid().ToString(); var(client, context) = ServiceTestingHelper.BuildServer <Startup, UserDbContext>(databaseName); var(token, userId) = AdminIdentity; var model = new PutPreferencesModel(); var request = CreatePutPreferencesRequest(token, userId, model); // When var response = await client.SendAsync(request); // Then Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); RefreshAll(context); Assert.Equal(0, context.Preferences.Count()); }
public async Task <IActionResult> PutUserPreferencesAsync(Guid userId, [FromBody] PutPreferencesModel preferenceModel) { var authorizedUserId = Guid.Parse(HttpContext.User.Claims.Single(c => c.Type == "userId").Value); var elevatedRights = bool.Parse(HttpContext.User.Claims.Single(c => c.Type == "ElevatedRights").Value); if (!elevatedRights && userId != authorizedUserId) { return(Forbid()); } var preference = await _userService.GetUserPreferenceAsync(userId); if (preference is null) { return(NotFound()); } _userService.PutUserPreference(preference, preferenceModel, authorizedUserId); await _userService.CompleteTransactionAsync(); return(Ok()); }
public void PutUserPreference(Preference preference, PutPreferencesModel preferenceModel, Guid authorizedUserId) { preference.PreferredLanguage = preferenceModel.Language; preference.EditedBy = authorizedUserId; preference.EditedOn = DateTimeOffset.Now; }