Я пытаюсь предотвратить превышение одной из моих функций сохранения. Я использую аннотацию 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.
}