From 06520eb5028803c3beb2626d5a566ad992a2ed9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9za=20Moln=C3=A1r?= Date: Sat, 3 Aug 2024 17:04:50 +0200 Subject: [PATCH] #279 adding auth details for proxy --- README.md | 3 ++- settings.js | 11 +++++++++-- settings.test.js | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) 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("");