Перепостинг не предотвращается аннотацией bind - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь предотвратить превышение одной из моих функций сохранения. Я использую аннотацию Bind, и она не работает. Возможно, это потому, что я использую FromBody и Bind. Это наша первая попытка сделать защиту надпоста белого списка, и мы просто устанавливаем стандарт организационно, так что даже другие идеи могут быть в порядке.

[HttpPost, HttpPut]
[Route("/Claim/Save")]
public async Task<EntitiesCorporation.Model.Claim> Save([FromBody, Bind(
  nameof(EntitiesCorporation.Model.Claim.WarrantyId),
  nameof(EntitiesCorporation.Model.Claim.ClaimId)
)] EntitiesCorporation.Model.Claim claim) => 
    await _claimService.SaveClaim(claim, await _userService.GetCurrentUserRecordFromDatabase()); //here ClaimAmount is being honoured and I don't want it to be

Вот тест, который я написал, который проваливается, потому что он утверждает, что ClaimAmountне был изменен:

[Theory]
[InlineData(1, 34464, "/Claim/Save")]
public async Task Save_Claim_Ignores_Overposting(int warrantyId, int claimAmount, string url)
{
    var claim = new EntitiesCorporation.Model.Claim()
    {
        WarrantyId = warrantyId,
    };

    var content = JsonConvert.SerializeObject(new { WarrantyId = warrantyId, ClaimAmount = claimAmount });


    var response = await _client.PostAsync(url, new StringContent(content, Encoding.UTF8, "application/json"));
    response.EnsureSuccessStatusCode();

    var claimResponse = JsonConvert.DeserializeObject<EntitiesCorporation.Model.Claim>(await response.Content.ReadAsStringAsync());
    Assert.True(claimResponse.ClaimAmount == 0); //Fails because ClaimAmount is now 34464.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...