/// <inheritdoc /> public override async Task <ResourceResponse> ExecuteAsync(PatchResourceRequest request) { try { var resource = await this.Repository.ReadResourceAsync(request.ResourceId); resource = this.PatchApplier.ApplyTo(resource, PatchOperation.Parse(request.Payload)); resource = await this.Repository.UpdateResourceAsync(resource); return(new ResourceResponse { Code = ResponseCode.Success, Resource = resource }); } catch (ResourceNotFoundException exception) { return(new ResourceResponse { Code = ResponseCode.ResourceNotFound, Exception = exception }); } catch (Exception exception) { return(new ResourceResponse { Code = ResponseCode.Failure, Exception = exception }); } }
public void TestJsonArrayCanBeParsed() { var result = PatchOperation.Parse( "[{ \"op\": \"test\", \"path\": \"/a/b/c\", \"value\": \"foo\" }, { \"op\": \"remove\", \"path\": \"/a/b/c\" }]"); Assert.AreEqual(2, result.Count); Assert.AreEqual("test", result[0].Operation); Assert.AreEqual("/a/b/c", result[0].Path); Assert.AreEqual("foo", result[0].Value); }
public void TestMalformedJsonInputShouldThrowException() { PatchOperation.Parse("[{ \"opsss\": \"test\", \"path\": \"/a/b/c\", \"value\": \"foo\" }]"); }