diff --git a/README.md b/README.md
index 97678958..50d6d1b0 100644
--- a/README.md
+++ b/README.md
@@ -106,8 +106,9 @@ steps:
step:
- uses: s4u/maven-settings-action@v3.0.0
with:
- proxies: '[{"id": "proxyId", "active": "isActive", "protocol": "proxyProtocol", "host": "proxyHost", "port": "proxyPort", "nonProxyHosts": "nonProxyHost"}]'
+ proxies: '[{"id": "proxyId", "active": "isActive", "protocol": "proxyProtocol", "host": "proxyHost", "port": "proxyPort", "nonProxyHosts": "nonProxyHost", "user": "proxUser", "password": "proxPassword"}]'
```
+Note: Authentication details are optional.
## ```settings.xml``` with properties
```yml
diff --git a/settings.js b/settings.js
index 01f228d1..64eb4412 100644
--- a/settings.js
+++ b/settings.js
@@ -213,10 +213,10 @@ function fillProxies(template) {
return;
}
- JSON.parse(proxies).forEach((proxy) => fillProxy(template, proxy.id, proxy.active, proxy.protocol, proxy.host, proxy.port, proxy.nonProxyHosts));
+ JSON.parse(proxies).forEach((proxy) => fillProxy(template, proxy.id, proxy.active, proxy.protocol, proxy.host, proxy.port, proxy.nonProxyHosts, proxy.user, proxy.password));
}
-function fillProxy(template, id, active, protocol, host, port, nonProxyHosts) {
+function fillProxy(template, id, active, protocol, host, port, nonProxyHosts, proxyUser, proxyPassword) {
if(!id || !active || !protocol || !host || !port || !nonProxyHosts) {
core.setFailed('proxies must contain id, active, protocol, host, port and nonProxyHosts');
return;
@@ -230,6 +230,13 @@ function fillProxy(template, id, active, protocol, host, port, nonProxyHosts) {
proxyXml.getElementsByTagName("port")[0].textContent = port;
proxyXml.getElementsByTagName("nonProxyHosts")[0].textContent = nonProxyHosts;
+ if(proxyUser) {
+ jsonToXml(proxyXml, proxyXml.documentElement, {username: proxyUser});
+ }
+ if(proxyPassword) {
+ jsonToXml(proxyXml, proxyXml.documentElement, {password: proxyPassword});
+ }
+
const proxiesXml = template.getElementsByTagName('proxies')[0];
proxiesXml.appendChild(proxyXml);
}
diff --git a/settings.test.js b/settings.test.js
index 02ce6494..b46702f3 100644
--- a/settings.test.js
+++ b/settings.test.js
@@ -466,6 +466,26 @@ test("fillProxies one proxy", () => {
})
+test("fillProxies one proxy with auth info", () => {
+ const xml = stringAsXml("");
+
+ process.env['INPUT_PROXIES'] = `[{"id": "proxyId", "active": "isActive", "protocol": "proxyProtocol",
+ "host": "proxyHost", "port": "proxyPort", "nonProxyHosts": "nonProxyHost", "user": "proxyUser", "password": "somepassword"}]`;
+
+ settings.fillProxies(xml);
+
+ const xmlStr = new XMLSerializer().serializeToString(xml);
+ expect(xmlStr).toBe(`
+ proxyId
+ isActive
+ proxyProtocol
+ proxyHost
+ proxyPort
+ nonProxyHost
+proxyUsersomepassword`)
+
+})
+
test("fillProxies two proxies", () => {
const xml = stringAsXml("");