Repository navigation
Expand file tree
/
Copy pathOpenCodeHttpClientConfigTest.java
More file actions
129 lines (117 loc) · 6.21 KB
/
Copy pathOpenCodeHttpClientConfigTest.java
File metadata and controls
129 lines (117 loc) · 6.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package io.github.easy4j.opencode;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* Tests for {@link OpenCodeHttpClientConfig}.
*/
class OpenCodeHttpClientConfigTest {
@Test
void shouldHaveCorrectDefaults() {
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
assertEquals(HttpResponseMode.BLOCKING, config.getMode());
assertTrue(config.isEnabled());
assertFalse(config.isStartupCheckEnabled());
assertFalse(config.isFailFastOnUnavailable());
assertEquals("http://localhost:4096", config.getServerUrl());
assertEquals("opencode", config.getUsername());
assertNull(config.getPassword());
assertEquals(15_000, config.getConnectTimeoutMillis());
assertEquals(300_000, config.getReadTimeoutMillis());
assertEquals(120_000, config.getWriteTimeoutMillis());
assertEquals(0, config.getCallTimeoutMillis());
assertEquals(32, config.getMaxIdleConnections());
assertEquals(300_000L, config.getKeepAliveDurationMillis());
assertEquals(128, config.getMaxRequests());
assertEquals(128, config.getMaxRequestsPerHost());
assertEquals(32, config.getStreamCorePoolSize());
assertEquals(32, config.getStreamMaxPoolSize());
assertEquals(128, config.getStreamQueueCapacity());
assertEquals(60_000L, config.getStreamKeepAliveMillis());
assertEquals(1_024, config.getStreamEventQueueCapacity());
assertTrue(config.isRetryOnConnectionFailure());
assertTrue(config.isVerifySsl());
assertNull(config.getDefaultModel());
assertNull(config.getDefaultAgent());
}
@Test
void shouldResolvePasswordWhenPresent() {
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
config.setPassword("secret");
assertEquals("secret", config.resolvePassword());
}
@Test
void shouldResolveEmptyPasswordWhenNull() {
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
assertNull(config.getPassword());
assertEquals("", config.resolvePassword());
}
@Test
void shouldKeepLegacySseEventQueueAlias() {
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
config.setSseEventQueueCapacity(17);
assertEquals(17, config.getStreamEventQueueCapacity());
}
@Test
void aliasesShareCanonicalState() {
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
config.setServerUrl("http://legacy:4096");
assertEquals("http://legacy:4096", config.getBaseUrl());
config.setBaseUrl("http://canonical:4096");
assertEquals("http://canonical:4096", config.getServerUrl());
config.setStreamEventQueueCapacity(23);
assertEquals(23, config.getSseEventQueueCapacity());
config.setSseEventQueueCapacity(31);
assertEquals(31, config.getStreamEventQueueCapacity());
}
@Test
void jsonBindsBothPropertyNamesAndRoundTrips() throws Exception {
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
for (String names : new String[]{"serverUrl,sseEventQueueCapacity", "baseUrl,streamEventQueueCapacity"}) {
String[] properties = names.split(",");
String json = "{\"" + properties[0] + "\":\"http://json:4096\",\"" + properties[1] + "\":37}";
OpenCodeHttpClientConfig config = mapper.readValue(json, OpenCodeHttpClientConfig.class);
assertEquals("http://json:4096", config.getBaseUrl());
assertEquals(config.getBaseUrl(), config.getServerUrl());
assertEquals(37, config.getStreamEventQueueCapacity());
assertEquals(37, config.getSseEventQueueCapacity());
assertEquals(config, mapper.readValue(mapper.writeValueAsString(config), OpenCodeHttpClientConfig.class));
}
}
@Test
void jsonOutputExposesEqualCanonicalAndLegacyValues() throws Exception {
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
config.setBaseUrl("http://output:4096");
config.setStreamEventQueueCapacity(41);
com.fasterxml.jackson.databind.JsonNode json = mapper.valueToTree(config);
assertEquals("http://output:4096", json.get("baseUrl").asText());
assertEquals(json.get("baseUrl"), json.get("serverUrl"));
assertEquals(41, json.get("streamEventQueueCapacity").asInt());
assertEquals(json.get("streamEventQueueCapacity"), json.get("sseEventQueueCapacity"));
}
@Test
void conflictingJsonNamesUseLastValueInDocumentOrder() throws Exception {
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
OpenCodeHttpClientConfig canonicalLast = mapper.readValue("""
{"serverUrl":"http://legacy:4096","baseUrl":"http://canonical:4096",
"sseEventQueueCapacity":11,"streamEventQueueCapacity":22}
""", OpenCodeHttpClientConfig.class);
assertEquals("http://canonical:4096", canonicalLast.getServerUrl());
assertEquals(22, canonicalLast.getSseEventQueueCapacity());
OpenCodeHttpClientConfig legacyLast = mapper.readValue("""
{"baseUrl":"http://canonical:4096","serverUrl":"http://legacy:4096",
"streamEventQueueCapacity":22,"sseEventQueueCapacity":11}
""", OpenCodeHttpClientConfig.class);
assertEquals("http://legacy:4096", legacyLast.getBaseUrl());
assertEquals(11, legacyLast.getStreamEventQueueCapacity());
}
@Test
void jsonAliasesAlsoBindNestedHttpConfiguration() throws Exception {
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
OpenCodeClientConfig config = mapper.readValue("""
{"http":{"serverUrl":"http://nested:4096","sseEventQueueCapacity":19}}
""", OpenCodeClientConfig.class);
assertEquals("http://nested:4096", config.getHttp().getBaseUrl());
assertEquals(19, config.getHttp().getStreamEventQueueCapacity());
}
}