Skip to content

Commit a7c7ed0

Browse files
authored
[facade-jira] Make basic auth config not mandatory for JIRA config (#5751)
1 parent 163dd5b commit a7c7ed0

File tree

3 files changed

+47
-24
lines changed

3 files changed

+47
-24
lines changed

vividus-facade-jira/src/main/java/org/vividus/jira/databind/JiraConfigurationDeserializer.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,20 @@ public JiraConfiguration deserialize(JsonParser parser, DeserializationContext c
6161
{
6262
HttpClientConfig httpClientConfig = codec.treeToValue(httpNode, HttpClientConfig.class);
6363
configuration.setHttpClientConfig(httpClientConfig);
64-
65-
JsonNode authNode = httpNode.get("auth");
66-
BasicAuthConfig authConfig = new BasicAuthConfig();
67-
authConfig.setUsername(asText(authNode, "username"));
68-
authConfig.setPassword(asText(authNode, "password"));
69-
authConfig.setPreemptiveAuthEnabled(Optional.ofNullable(authNode.get("preemptive-auth-enabled"))
70-
.map(JsonNode::asBoolean).orElse(false));
7164
HttpContextConfig contextConfig = new HttpContextConfig();
72-
contextConfig.setOrigin(endpoint);
73-
contextConfig.setAuth(authConfig);
7465
httpClientConfig.setHttpContextConfig(Map.of("jira", contextConfig));
66+
67+
JsonNode authNode = httpNode.get("auth");
68+
if (authNode != null)
69+
{
70+
BasicAuthConfig authConfig = new BasicAuthConfig();
71+
authConfig.setUsername(asText(authNode, "username"));
72+
authConfig.setPassword(asText(authNode, "password"));
73+
authConfig.setPreemptiveAuthEnabled(Optional.ofNullable(authNode.get("preemptive-auth-enabled"))
74+
.map(JsonNode::asBoolean).orElse(false));
75+
contextConfig.setOrigin(endpoint);
76+
contextConfig.setAuth(authConfig);
77+
}
7578
}
7679

7780
return configuration;

vividus-facade-jira/src/test/java/org/vividus/jira/databind/JiraConfigurationDeserializerTests.java

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@
3636

3737
class JiraConfigurationDeserializerTests
3838
{
39+
private static final String JIRA_KEY = "jira";
40+
3941
@Test
4042
void shouldDeserialize() throws IOException
4143
{
42-
JsonParser parser = new JavaPropsFactory().createParser("""
44+
JiraConfiguration configuration = deserialize("""
4345
project-key-regex=VVDS
4446
endpoint=https://jira.vividus.com
4547
fields-mapping.test-case-type=customfield_00001
@@ -48,10 +50,6 @@ void shouldDeserialize() throws IOException
4850
http.auth.password=052ddff802a174847345
4951
http.socket-timeout=1
5052
""");
51-
parser.setCodec(new JavaPropsMapper().setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE));
52-
53-
JiraConfigurationDeserializer deserializer = new JiraConfigurationDeserializer();
54-
JiraConfiguration configuration = deserializer.deserialize(parser, null);
5553

5654
assertEquals("VVDS", configuration.getProjectKeyRegex().pattern());
5755
String endpoint = "https://jira.vividus.com";
@@ -64,7 +62,7 @@ void shouldDeserialize() throws IOException
6462
assertEquals(1, http.getSocketTimeout());
6563
Map<String, HttpContextConfig> contextConfigs = http.getHttpContextConfig();
6664
assertNotNull(contextConfigs);
67-
HttpContextConfig contextConfig = contextConfigs.get("jira");
65+
HttpContextConfig contextConfig = contextConfigs.get(JIRA_KEY);
6866
assertNotNull(contextConfig);
6967
BasicAuthConfig config = contextConfig.getAuth();
7068
assertNotNull(config);
@@ -74,17 +72,39 @@ void shouldDeserialize() throws IOException
7472
}
7573

7674
@Test
77-
void shouldDeserializeEmpty() throws IOException
75+
void shouldDeserializeWithoutAuth() throws IOException
7876
{
79-
JsonParser parser = new JavaPropsFactory().createParser("");
80-
parser.setCodec(new JavaPropsMapper().setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE));
77+
JiraConfiguration configuration = deserialize("""
78+
http.socket-timeout=1
79+
""");
8180

82-
JiraConfigurationDeserializer deserializer = new JiraConfigurationDeserializer();
83-
JiraConfiguration configuration = deserializer.deserialize(parser, null);
81+
HttpClientConfig http = configuration.getHttpClientConfig();
82+
assertNotNull(http);
83+
assertEquals(1, http.getSocketTimeout());
84+
Map<String, HttpContextConfig> contextConfigs = http.getHttpContextConfig();
85+
assertNotNull(contextConfigs);
86+
HttpContextConfig contextConfig = contextConfigs.get(JIRA_KEY);
87+
assertNotNull(contextConfig);
88+
assertNull(contextConfig.getAuth());
89+
}
90+
91+
@Test
92+
void shouldDeserializeEmpty() throws IOException
93+
{
94+
JiraConfiguration configuration = deserialize("");
8495

8596
assertNull(configuration.getProjectKeyRegex());
8697
assertNull(configuration.getEndpoint());
8798
assertNull(configuration.getFieldsMapping());
8899
assertNull(configuration.getHttpClientConfig());
89100
}
101+
102+
private JiraConfiguration deserialize(String input) throws IOException
103+
{
104+
JsonParser parser = new JavaPropsFactory().createParser(input);
105+
parser.setCodec(new JavaPropsMapper().setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE));
106+
107+
JiraConfigurationDeserializer deserializer = new JiraConfigurationDeserializer();
108+
return deserializer.deserialize(parser, null);
109+
}
90110
}

vividus-http-client/src/main/resources/org/vividus/http/client/defaults.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ http.service-unavailable-retry.max-retries=1
1919
http.service-unavailable-retry.retry-interval=PT1S
2020
http.service-unavailable-retry.status-codes=
2121

22-
http.auth.origin=*
23-
http.auth.username=
24-
http.auth.password=
25-
http.auth.preemptive-auth-enabled=false
22+
http.context.003e952c9a.origin=*
23+
http.context.003e952c9a.auth.username=
24+
http.context.003e952c9a.auth.password=
25+
http.context.003e952c9a.auth.preemptive-auth-enabled=false

0 commit comments

Comments
 (0)