Пример #1
0
        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);
                }
            };
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        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);
                }
            };
        }
Пример #4
0
        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);
                }
            };
        }
Пример #5
0
        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());
                }
            };
        }