public async Task NullArguments_ReadRequestBodyAsync_ThrowsArgumentNullException() { var sut = new JsonMergePatchInputReader(new JsonOptions(), Substitute.For <ITypeRepository>()); await Assert.ThrowsAsync <ArgumentNullException>(() => sut.ReadRequestBodyAsync(null, Encoding.UTF8)); await Assert.ThrowsAsync <ArgumentNullException>(() => sut.ReadRequestBodyAsync(CreateInputFormatterContext(typeof(Patch <TestDto>), new DefaultHttpContext()), null)); }
public void Contruction_Sets_SerializerOptions() { var options = new JsonOptions(); var sut = new JsonMergePatchInputReader(options, Substitute.For <ITypeRepository>()); Assert.Same(options.SerializerOptions, sut.SerializerOptions); }
public void Contruction_Sets_SupportedEncodings() { var sut = new JsonMergePatchInputReader(new JsonOptions(), Substitute.For <ITypeRepository>()); Assert.Contains(Encoding.UTF8, sut.SupportedEncodings); Assert.Contains(Encoding.Unicode, sut.SupportedEncodings); }
public async Task NonPatchType_CanRead_ReturnsFalse() { var sut = new JsonMergePatchInputReader(new JsonOptions(), CreateTypeRepository()); DefaultHttpContext httpContext = await CreateHttpContextAsync("{ \"Prop1\" : 5 }").ConfigureAwait(false); var inputContext = CreateInputFormatterContext(typeof(TestDto), httpContext); Assert.False(sut.CanRead(inputContext)); }
public async Task NoTypeRepositoryRegistration_ReadRequestBodyAsync_ReturnsFailure() { var sut = new JsonMergePatchInputReader(new JsonOptions(), Substitute.For <ITypeRepository>()); var httpContext = new DefaultHttpContext(); var inputContext = CreateInputFormatterContext(typeof(Patch <TestDto>), httpContext); var result = await sut.ReadRequestBodyAsync(inputContext, Encoding.UTF8); Assert.Equal(InputFormatterResult.Failure(), result); }
public async Task OtherEncodingJson_ReadRequestBodyAsync_ReturnsFailure() { var sut = new JsonMergePatchInputReader(new JsonOptions(), CreateTypeRepository()); DefaultHttpContext httpContext = await CreateHttpContextAsync("{ \"Prop1\" : 5 }", Encoding.Unicode).ConfigureAwait(false); var inputContext = CreateInputFormatterContext(typeof(Patch <TestDto>), httpContext); var result = await sut.ReadRequestBodyAsync(inputContext, Encoding.Unicode); Assert.Equal(5, ((TestDtoWrapped)result.Model).Prop1); }
public async Task NoPatchInputType_ReadRequestBodyAsync_ReturnsFailure() { var sut = new JsonMergePatchInputReader(new JsonOptions(), CreateTypeRepository()); DefaultHttpContext httpContext = await CreateHttpContextAsync("{ \"Prop1\" : 5 }").ConfigureAwait(false); var inputContext = CreateInputFormatterContext(typeof(TestDto), httpContext); var result = await sut.ReadRequestBodyAsync(inputContext, Encoding.UTF8); Assert.Equal(InputFormatterResult.Failure(), result); }
public async Task InvalidJson_ReadRequestBodyAsync_ReturnsFailure() { var sut = new JsonMergePatchInputReader(new JsonOptions(), CreateTypeRepository()); DefaultHttpContext httpContext = await CreateHttpContextAsync("invalid").ConfigureAwait(false); var inputContext = CreateInputFormatterContext(typeof(Patch <TestDto>), httpContext); var result = await sut.ReadRequestBodyAsync(inputContext, Encoding.UTF8); Assert.Equal(InputFormatterResult.Failure(), result); Assert.Equal(1, inputContext.ModelState.ErrorCount); }
public void Contruction_Sets_SupportedMediaType() { var sut = new JsonMergePatchInputReader(new JsonOptions(), Substitute.For <ITypeRepository>()); Assert.Contains("application/merge-patch+json", sut.SupportedMediaTypes); }