You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2021/12/04 12:43:25 UTC

[httpcomponents-client] branch master updated: Complete test for HTTP Methods.

This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git


The following commit(s) were added to refs/heads/master by this push:
     new f8f5bbd  Complete test for HTTP Methods.
f8f5bbd is described below

commit f8f5bbda872e425dee4df07234f2d4e3e52f3b66
Author: Arturo Bernal <ar...@gmail.com>
AuthorDate: Sat Dec 4 00:23:31 2021 +0100

    Complete test for HTTP Methods.
---
 .../http/classic/methods/TestHttpRequestBase.java  | 143 ++++++++++++++++++++-
 1 file changed, 139 insertions(+), 4 deletions(-)

diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestHttpRequestBase.java b/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestHttpRequestBase.java
index 54aa4c8..d6ba7b8 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestHttpRequestBase.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestHttpRequestBase.java
@@ -27,24 +27,159 @@
 
 package org.apache.hc.client5.http.classic.methods;
 
+import static org.junit.jupiter.api.Assertions.assertAll;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
+import org.apache.hc.client5.http.entity.EntityBuilder;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.message.BasicHttpResponse;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 public class TestHttpRequestBase {
 
+    private static final String HOT_URL = "http://host/path";
+
     @Test
-    public void testBasicProperties() throws Exception {
-        final HttpGet httpget = new HttpGet("http://host/path");
+    public void testBasicGetMethodProperties() throws Exception {
+        final HttpGet httpget = new HttpGet(HOT_URL);
         Assertions.assertEquals("GET", httpget.getMethod());
-        Assertions.assertEquals(new URI("http://host/path"), httpget.getUri());
+        Assertions.assertEquals(new URI(HOT_URL), httpget.getUri());
+    }
+
+    @Test
+    public void testBasicHttpPostMethodProperties() throws Exception {
+        final HttpPost HttpPost = new HttpPost(HOT_URL);
+        Assertions.assertEquals("POST", HttpPost.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), HttpPost.getUri());
+    }
+
+    @Test
+    public void testBasicHttpHeadMethodProperties() throws Exception {
+        final HttpHead httpHead = new HttpHead(HOT_URL);
+        Assertions.assertEquals("HEAD", httpHead.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), httpHead.getUri());
+    }
+
+    @Test
+    public void testBasicHttpOptionMethodProperties() throws Exception {
+        final HttpOptions httpOption = new HttpOptions(HOT_URL);
+        Assertions.assertEquals("OPTIONS", httpOption.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), httpOption.getUri());
+    }
+
+    @Test
+    public void testBasicHttpPatchMethodProperties() throws Exception {
+        final HttpPatch httpPatch = new HttpPatch(HOT_URL);
+        Assertions.assertEquals("PATCH", httpPatch.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), httpPatch.getUri());
     }
 
     @Test
-    public void testEmptyURI() throws Exception {
+    public void testBasicHttpPutMethodProperties() throws Exception {
+        final HttpPut httpPut = new HttpPut(HOT_URL);
+        Assertions.assertEquals("PUT", httpPut.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), httpPut.getUri());
+    }
+
+    @Test
+    public void testBasicHttpTraceMethodProperties() throws Exception {
+        final HttpTrace httpTrace = new HttpTrace(HOT_URL);
+        Assertions.assertEquals("TRACE", httpTrace.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), httpTrace.getUri());
+    }
+
+
+    @Test
+    public void testBasicHttpDeleteMethodProperties() throws Exception {
+        final HttpDelete httpDelete = new HttpDelete(HOT_URL);
+        Assertions.assertEquals("DELETE", httpDelete.getMethod());
+        Assertions.assertEquals(new URI(HOT_URL), httpDelete.getUri());
+    }
+
+
+    @Test
+    public void testGetMethodEmptyURI() throws Exception {
         final HttpGet httpget = new HttpGet("");
         Assertions.assertEquals(new URI("/"), httpget.getUri());
     }
 
+    @Test
+    public void testPostMethodEmptyURI() throws Exception {
+        final HttpPost HttpPost = new HttpPost("");
+        Assertions.assertEquals(new URI("/"), HttpPost.getUri());
+    }
+
+    @Test
+    public void testHeadMethodEmptyURI() throws Exception {
+        final HttpHead httpHead = new HttpHead("");
+        Assertions.assertEquals(new URI("/"), httpHead.getUri());
+    }
+
+    @Test
+    public void testOptionMethodEmptyURI() throws Exception {
+        final HttpOptions httpOption = new HttpOptions("");
+        Assertions.assertEquals(new URI("/"), httpOption.getUri());
+    }
+
+    @Test
+    public void testPatchMethodEmptyURI() throws Exception {
+        final HttpPatch httpPatch = new HttpPatch("");
+        Assertions.assertEquals(new URI("/"), httpPatch.getUri());
+    }
+
+    @Test
+    public void testPutMethodEmptyURI() throws Exception {
+        final HttpPut httpPut = new HttpPut("");
+        Assertions.assertEquals(new URI("/"), httpPut.getUri());
+    }
+
+    @Test
+    public void testTraceMethodEmptyURI() throws Exception {
+        final HttpTrace httpTrace = new HttpTrace("");
+        Assertions.assertEquals(new URI("/"), httpTrace.getUri());
+    }
+
+
+    @Test
+    public void testDeleteMethodEmptyURI() throws Exception {
+        final HttpDelete httpDelete = new HttpDelete("");
+        Assertions.assertEquals(new URI("/"), httpDelete.getUri());
+    }
+
+
+    @Test
+    public void testTraceMethodSetEntity() {
+        final HttpTrace httpTrace = new HttpTrace(HOT_URL);
+        final HttpEntity entity = EntityBuilder.create().setText("stuff").build();
+        assertThrows(IllegalStateException.class, () -> httpTrace.setEntity(entity));
+    }
+
+    @Test
+    public void testOptionMethodGetAllowedMethods() {
+        final HttpResponse response = new BasicHttpResponse(HttpStatus.SC_OK, "OK");
+        response.addHeader("Allow", "GET, HEAD");
+        response.addHeader("Allow", "DELETE");
+        response.addHeader("Content-Length", "128");
+        final HttpOptions httpOptions = new HttpOptions("");
+        final Set<String> methods = httpOptions.getAllowedMethods(response);
+        assertAll("Must all pass",
+                () -> assertFalse(methods.isEmpty()),
+                () -> assertEquals(methods.size(), 3),
+                () -> assertTrue(methods.containsAll(Stream.of("HEAD", "DELETE", "GET")
+                        .collect(Collectors.toCollection(HashSet::new))))
+        );
+    }
+
 }