MCPcopy Create free account
hub / github.com/NanoNative/nano / HttpObjectTest

Class HttpObjectTest

src/test/java/org/nanonative/nano/model/HttpObjectTest.java:54–839  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52import static org.nanonative.nano.services.http.model.HttpHeaders.VARY;
53
54class HttpObjectTest {
55
56 @Test
57 void browserRequestTest() {
58 final HttpObject httpObject = new HttpObject()
59 .methodType(HttpMethod.GET)
60 .path("/notifications/indicator")
61 .header("Accept", "application/json")
62 .header("Accept-Encoding", "gzip, deflate")
63 .header("Accept-Language", "en-GB,en;q=0.9")
64 .header("Connection", "keep-alive")
65 .header("Host", "example.com")
66 .header("Referer", "https://example.com/test")
67 .header("Sec-Fetch-Dest", "empty")
68 .header("Sec-Fetch-Mode", "cors")
69 .header("Sec-Fetch-Site", "same-origin")
70 .header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15")
71 .header("X-Requested-With", "XMLHttpRequest");
72 assertThat(httpObject.methodType()).isEqualTo(HttpMethod.GET);
73 assertThat(httpObject.path()).isEqualTo("/notifications/indicator");
74 assertThat(httpObject.accepts()).containsExactly(APPLICATION_JSON);
75 assertThat(httpObject.acceptEncodings()).containsExactly("gzip", "deflate");
76 assertThat(httpObject.acceptLanguages()).containsExactly(Locale.UK, ENGLISH);
77 assertThat(httpObject.header(HOST)).isEqualTo("example.com");
78 assertThat(httpObject.header(REFERER)).isEqualTo("https://example.com/test");
79 assertThat(httpObject.userAgent()).isEqualTo("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15");
80 assertThat(httpObject.header("X-Requested-With")).isEqualTo("XMLHttpRequest");
81 }
82
83 @Test
84 void testRespondCreateCreateResponse() {
85 final Event<HttpObject, HttpObject> event = Context.createRootContext(HttpObjectTest.class).newEvent(EVENT_HTTP_REQUEST).payload(() -> new HttpObject().methodType(HttpMethod.GET).path("/create"));
86
87 event.payloadOpt()
88 .filter(HttpObject::isMethodGet)
89 .filter(request -> request.pathMatch("/create"))
90 .ifPresent(request -> request.createResponse().statusCode(201).body("success").respond(event));
91
92 assertThat(event.responseOpt()).isPresent();
93 assertThat(event.response().statusCode()).isEqualTo(201);
94 assertThat(event.response().bodyAsString()).isEqualTo("success");
95 }
96
97 @Test
98 void testCorsCreateCreateResponse() {
99 final HttpObject request = new HttpObject().header("origin", "aa.bb.cc");
100
101 // DEFAULT
102 assertThat(new HttpObject().createResponse(true).headerMap()).containsAllEntriesOf(Map.of(
103 ACCESS_CONTROL_ALLOW_CREDENTIALS, "false",
104 ACCESS_CONTROL_ALLOW_HEADERS, "Content-Type, Accept, Authorization, X-Requested-With",
105 ACCESS_CONTROL_ALLOW_METHODS, "GET",
106 ACCESS_CONTROL_ALLOW_ORIGIN, "*",
107 ACCESS_CONTROL_MAX_AGE, "86400",
108 VARY, "Origin"
109 ));
110
111 assertThat(new HttpObject().createCorsResponse().headerMap()).containsAllEntriesOf(Map.of(

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected