public async Task DeleteUnsafeAsync_Headers() { // Ensure that DELETE with query arguments work. using (new MockHttpServer(baseUri, async context => { var request = context.Request; var response = context.Response; if (request.Method != "DELETE") { response.StatusCode = (int)HttpStatusCode.MethodNotAllowed; return; } if (request.Path.ToString() != "/info") { response.StatusCode = (int)HttpStatusCode.NotFound; return; } var output = new ReplyDoc() { Value1 = request.Headers["arg1"], Value2 = request.Headers["arg2"] }; response.ContentType = "application/json"; await response.WriteAsync(NeonHelper.JsonSerialize(output)); })) { using (var jsonClient = new JsonClient()) { var headers = new ArgDictionary() { { "arg1", "test1" }, { "arg2", "test2" } }; var reply = (await jsonClient.DeleteUnsafeAsync(baseUri + "info", headers: headers)).As <ReplyDoc>(); Assert.Equal("test1", reply.Value1); Assert.Equal("test2", reply.Value2); } }; }
/// <summary> /// Deletes the value at a Vault path. /// </summary> /// <param name="path">The object path.</param> /// <param name="cancellationToken">The optional <see cref="CancellationToken"/>.</param> /// <exception cref="HttpException">Thrown for Vault communication problems.</exception> public async Task DeleteAsync(string path, CancellationToken cancellationToken = default) { Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(path)); var response = await JsonClient.DeleteUnsafeAsync($"/{vaultApiVersion}/{Normalize(path)}", null, cancellationToken); switch (response.StatusCode) { case HttpStatusCode.OK: case HttpStatusCode.NotFound: return; default: response.EnsureSuccess(); break; } }
public async Task DeleteUnsafeAsync_NotJson() { // Ensure that DELETE returning a non-JSON content type returns a NULL document. using (new MockHttpServer(baseUri, context => { var request = context.Request; var response = context.Response; if (request.Method != "DELETE") { response.StatusCode = (int)HttpStatusCode.MethodNotAllowed; return; } if (request.Path.ToString() != "/info") { response.StatusCode = (int)HttpStatusCode.NotFound; return; } var output = new ReplyDoc() { Value1 = "Hello World!" }; response.ContentType = "application/not-json"; response.Write(NeonHelper.JsonSerialize(output)); })) { using (var jsonClient = new JsonClient()) { var reply = (await jsonClient.DeleteUnsafeAsync(baseUri + "info")).As <ReplyDoc>(); Assert.Null(reply); } }; }
public async Task DeleteUnsafeAsync_Dynamic() { // Ensure that DELETE returning a dynamic works. using (new MockHttpServer(baseUri, context => { var request = context.Request; var response = context.Response; if (request.Method != "DELETE") { response.StatusCode = (int)HttpStatusCode.MethodNotAllowed; return; } if (request.Path.ToString() != "/info") { response.StatusCode = (int)HttpStatusCode.NotFound; return; } var output = new ReplyDoc() { Value1 = "Hello World!" }; response.ContentType = "application/json"; response.Write(NeonHelper.JsonSerialize(output)); })) { using (var jsonClient = new JsonClient()) { var reply = (await jsonClient.DeleteUnsafeAsync(baseUri + "info")).AsDynamic(); Assert.Equal("Hello World!", (string)reply.Value1); } }; }
public async Task DeleteUnsafeAsync_Error() { // Ensure that DELETE returning a hard error works. using (new MockHttpServer(baseUri, context => { var response = context.Response; response.StatusCode = (int)HttpStatusCode.NotFound; })) { using (var jsonClient = new JsonClient()) { var response = await jsonClient.DeleteUnsafeAsync(baseUri + "info"); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.False(response.IsSuccess); Assert.Throws <HttpException>(() => response.EnsureSuccess()); } }; }