Date: Mon, 30 Apr 2018 10:31:54 -0500
Subject: [PATCH 02/12] Use table for other approval boxes
---
.../scripts/ScriptApproval/index.jelly | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index 8e79cde41..12765c560 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -266,16 +266,18 @@ THE SOFTWARE.
- Signatures already approved assuming permission check:
-
+
+ Signatures already approved assuming permission check:
+
+
Signatures already approved which may have introduced a security vulnerability (recommend clearing):
-
+
You can also remove all previous signature approvals:
From cc452b2f5777e4f0acd9c278a91177aef161a088 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Mon, 30 Apr 2018 10:54:50 -0500
Subject: [PATCH 03/12] Better table styling
---
.../scripts/ScriptApproval/index.jelly | 28 ++++++++++++++++---
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index 12765c560..c89d4adda 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -30,9 +30,23 @@ THE SOFTWARE.
color: #fff;
}
table.approvals {
+ border-collapse:collapse;
+ height:189px;
+
+ tr {
+ width: 100%;
+ display: inline-table;
+ table-layout: fixed;
+ }
+ }
+
+ tbody.approvals {
+ overflow-y:scroll;
+ height:189px;
+ position:absolute;
border:1px solid;
- border-collapse:collapse
}
+
@@ -264,19 +278,25 @@ THE SOFTWARE.
Signatures already approved:
Signatures already approved assuming permission check:
Signatures already approved which may have introduced a security vulnerability (recommend clearing):
From 0fcce8e1e6a74cddd6a952abdaa5989217978148 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Mon, 30 Apr 2018 12:23:37 -0500
Subject: [PATCH 04/12] Added unit test
---
.../scripts/ScriptApprovalTest.java | 21 +++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java b/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
index b78fe6811..54b423a63 100644
--- a/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
+++ b/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
@@ -136,6 +136,27 @@ public void malformedScriptApproval() throws Exception {
assertEquals(0, sa.getDangerousApprovedSignatures().length);
}
+ @Test public void clearSelectedMethodLifeCycle() throws Exception {
+ ScriptApproval sa = ScriptApproval.get();
+
+ String signature1 = "method java.io.Writer write java.lang.String";
+ String signature2 = "method java.lang.AutoCloseable close";
+
+ sa.approveSignature(WHITELISTED_SIGNATURE);
+ sa.approveSignature(DANGEROUS_SIGNATURE);
+ sa.approveSignature(signature1);
+ sa.approveSignature(signature2);
+ assertEquals(4, sa.getApprovedSignatures().length);
+
+ String[] toBeRemoved = {WHITELISTED_SIGNATURE};
+ sa.clearSelectedSignatures(toBeRemoved);
+ assertEquals(3, sa.getApprovedSignatures().length);
+
+ toBeRemoved = new String[]{signature1, signature2};
+ sa.clearSelectedSignatures(toBeRemoved);
+ assertEquals(1, sa.getApprovedSignatures().length);
+ }
+
private Script script(String groovy) {
return new Script(groovy);
}
From e4601675652f4142eebbe9f8688885780b4bf0a1 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Mon, 30 Apr 2018 15:34:29 -0500
Subject: [PATCH 05/12] Update the ui dynamically
---
.../scripts/ScriptApproval.java | 2 -
.../scripts/ScriptApproval/index.jelly | 139 +++++++++++++++---
2 files changed, 116 insertions(+), 25 deletions(-)
diff --git a/src/main/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval.java b/src/main/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval.java
index 7662da644..33122486c 100644
--- a/src/main/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval.java
+++ b/src/main/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval.java
@@ -809,7 +809,6 @@ private String[][] reconfigure() throws IOException {
save();
}
- // TODO nicer would be to allow the user to actually edit the list directly (with syntax checks)
@Restricted(NoExternalUse.class) // for use from AJAX
@JavaScriptMethod public synchronized String[][] clearApprovedSignatures() throws IOException {
Jenkins.getInstance().checkPermission(Jenkins.RUN_SCRIPTS);
@@ -859,7 +858,6 @@ private String[][] reconfigure() throws IOException {
while (it.hasNext()) {
if (sig.equals(it.next())) {
it.remove();
- it = approvedSignatures.iterator();
break;
}
}
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index c89d4adda..07ddbf5c9 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -69,10 +69,93 @@ THE SOFTWARE.
}
function updateApprovedSignatures(r) {
var both = r.responseObject();
- $('approvedSignatures').value = both[0].join('\n');
- $('aclApprovedSignatures').value = both[1].join('\n');
- $('dangerousApprovedSignatures').value = both[2].join('\n');
+
+ if(both[0].length > 0) {
+ var newApprovedSignatures = document.createElement('tbody');
+ var oldApprovedSignatures = $('approvedSignaturesBody');
+ newApprovedSignatures.setAttribute('class', 'approvals');
+ newApprovedSignatures.setAttribute('id', 'approvedSignaturesBody');
+ both[0].forEach(function (approvedSig) {
+ var tr = document.createElement('tr');
+
+ var td = document.createElement('td');
+ td.setAttribute('onclick', 'selectRow(this)');
+ td.setAttribute('class', 'text_data');
+
+ var txt = document.createTextNode(approvedSig);
+
+ td.appendChild(txt);
+ tr.appendChild(td);
+ newApprovedSignatures.appendChild(tr);
+ });
+
+ if(oldApprovedSignatures === null) {
+ $('approvedSignatures').appendChild(newApprovedSignatures);
+ } else {
+ $('approvedSignatures').replaceChild(newApprovedSignatures, oldApprovedSignatures);
+ }
+ if(both[0].length === 0 && $('approvedSignatures').firstChild !== null) {
+ $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
+ }
+ }
+
+ if(both[1].length > 0) {
+ var newApprovedAclSignatures = document.createElement('tbody');
+ var oldApprovedAclSignatures = $('aclApprovedSignaturesBody');
+ newApprovedAclSignatures.setAttribute('class', 'approvals');
+ newApprovedAclSignatures.setAttribute('id', 'aclApprovedSignaturesBody');
+ both[1].forEach(function (aclApprovedSig) {
+ var tr = document.createElement('tr');
+
+ var td = document.createElement('td');
+ td.setAttribute('onclick', 'selectRow(this)');
+ td.setAttribute('class', 'text_data');
+
+ var txt = document.createTextNode(aclApprovedSig);
+
+ td.appendChild(txt);
+ tr.appendChild(td);
+ newApprovedAclSignatures.appendChild(tr);
+ });
+
+ if(oldApprovedAclSignatures === null) {
+ $('aclApprovedSignatures').appendChild(newApprovedAclSignatures);
+ } else {
+ $('aclApprovedSignatures').replaceChild(newApprovedAclSignatures, oldApprovedAclSignatures);
+ }
+ }
+ if(both[1].length === 0 && $('aclApprovedSignatures').firstChild !== null) {
+ $('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
+ }
+
+ var newApprovedDangerousSignatures = document.createElement('tbody');
+ var oldApprovedDangerousSignatures = $('dangerousApprovedSignaturesBody');
+ newApprovedDangerousSignatures.setAttribute('class', 'approvals');
+ newApprovedDangerousSignatures.setAttribute('id', 'dangerousApprovedSignaturesBody');
+ both[2].forEach(function (aclApprovedSig) {
+ var tr = document.createElement('tr');
+
+ var td = document.createElement('td');
+ td.setAttribute('onclick', 'selectRow(this)');
+ td.setAttribute('class', 'text_data');
+
+ var txt = document.createTextNode(aclApprovedSig);
+
+ td.appendChild(txt);
+ tr.appendChild(td);
+ newApprovedDangerousSignatures.appendChild(tr);
+ });
+
+ if(oldApprovedDangerousSignatures === null) {
+ $('dangerousApprovedSignatures').appendChild(newApprovedDangerousSignatures);
+ } else {
+ $('dangerousApprovedSignatures').replaceChild(newApprovedDangerousSignatures, oldApprovedDangerousSignatures);
+ }
+ if(both[2].length === 0 && $('dangerousApprovedSignatures').firstChild !== null) {
+ $('dangerousApprovedSignatures').removeChild($('dangerousApprovedSignatures').firstChild);
+ }
}
+
function approveSignature(signature, hash) {
mgr.approveSignature(signature, function(r) {
updateApprovedSignatures(r);
@@ -277,28 +360,38 @@ THE SOFTWARE.
Signatures already approved:
-
-
- Signatures already approved assuming permission check:
-
-
- | ${line} |
-
+
-
+ Signatures already approved assuming permission check:
+
+
+
+
+
+
+
+
-
- Signatures already approved which may have introduced a security vulnerability (recommend clearing):
-
-
+ Signatures already approved which may have introduced a security vulnerability (recommend clearing):
+
+
+
+
+
+
+
+
You can also remove all previous signature approvals:
From 06e71a3ee8734c3f6b512a78139950068846b713 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 08:51:18 -0500
Subject: [PATCH 06/12] Removing unneeded logic
---
.../scripts/ScriptApproval/index.jelly | 82 +++++++++----------
1 file changed, 39 insertions(+), 43 deletions(-)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index 07ddbf5c9..6a5d0a49e 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -70,59 +70,55 @@ THE SOFTWARE.
function updateApprovedSignatures(r) {
var both = r.responseObject();
- if(both[0].length > 0) {
- var newApprovedSignatures = document.createElement('tbody');
- var oldApprovedSignatures = $('approvedSignaturesBody');
- newApprovedSignatures.setAttribute('class', 'approvals');
- newApprovedSignatures.setAttribute('id', 'approvedSignaturesBody');
- both[0].forEach(function (approvedSig) {
- var tr = document.createElement('tr');
+ var newApprovedSignatures = document.createElement('tbody');
+ var oldApprovedSignatures = $('approvedSignaturesBody');
+ newApprovedSignatures.setAttribute('class', 'approvals');
+ newApprovedSignatures.setAttribute('id', 'approvedSignaturesBody');
+ both[0].forEach(function (approvedSig) {
+ var tr = document.createElement('tr');
- var td = document.createElement('td');
- td.setAttribute('onclick', 'selectRow(this)');
- td.setAttribute('class', 'text_data');
+ var td = document.createElement('td');
+ td.setAttribute('onclick', 'selectRow(this)');
+ td.setAttribute('class', 'text_data');
- var txt = document.createTextNode(approvedSig);
+ var txt = document.createTextNode(approvedSig);
- td.appendChild(txt);
- tr.appendChild(td);
- newApprovedSignatures.appendChild(tr);
- });
+ td.appendChild(txt);
+ tr.appendChild(td);
+ newApprovedSignatures.appendChild(tr);
+ });
- if(oldApprovedSignatures === null) {
- $('approvedSignatures').appendChild(newApprovedSignatures);
- } else {
- $('approvedSignatures').replaceChild(newApprovedSignatures, oldApprovedSignatures);
- }
- if(both[0].length === 0 && $('approvedSignatures').firstChild !== null) {
- $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
- }
+ if(oldApprovedSignatures === null) {
+ $('approvedSignatures').appendChild(newApprovedSignatures);
+ } else {
+ $('approvedSignatures').replaceChild(newApprovedSignatures, oldApprovedSignatures);
+ }
+ if(both[0].length === 0 && $('approvedSignatures').firstChild !== null) {
+ $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
}
- if(both[1].length > 0) {
- var newApprovedAclSignatures = document.createElement('tbody');
- var oldApprovedAclSignatures = $('aclApprovedSignaturesBody');
- newApprovedAclSignatures.setAttribute('class', 'approvals');
- newApprovedAclSignatures.setAttribute('id', 'aclApprovedSignaturesBody');
- both[1].forEach(function (aclApprovedSig) {
- var tr = document.createElement('tr');
+ var newApprovedAclSignatures = document.createElement('tbody');
+ var oldApprovedAclSignatures = $('aclApprovedSignaturesBody');
+ newApprovedAclSignatures.setAttribute('class', 'approvals');
+ newApprovedAclSignatures.setAttribute('id', 'aclApprovedSignaturesBody');
+ both[1].forEach(function (aclApprovedSig) {
+ var tr = document.createElement('tr');
- var td = document.createElement('td');
- td.setAttribute('onclick', 'selectRow(this)');
- td.setAttribute('class', 'text_data');
+ var td = document.createElement('td');
+ td.setAttribute('onclick', 'selectRow(this)');
+ td.setAttribute('class', 'text_data');
- var txt = document.createTextNode(aclApprovedSig);
+ var txt = document.createTextNode(aclApprovedSig);
- td.appendChild(txt);
- tr.appendChild(td);
- newApprovedAclSignatures.appendChild(tr);
- });
+ td.appendChild(txt);
+ tr.appendChild(td);
+ newApprovedAclSignatures.appendChild(tr);
+ });
- if(oldApprovedAclSignatures === null) {
- $('aclApprovedSignatures').appendChild(newApprovedAclSignatures);
- } else {
- $('aclApprovedSignatures').replaceChild(newApprovedAclSignatures, oldApprovedAclSignatures);
- }
+ if(oldApprovedAclSignatures === null) {
+ $('aclApprovedSignatures').appendChild(newApprovedAclSignatures);
+ } else {
+ $('aclApprovedSignatures').replaceChild(newApprovedAclSignatures, oldApprovedAclSignatures);
}
if(both[1].length === 0 && $('aclApprovedSignatures').firstChild !== null) {
$('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
From 15e444d0134b6c2780839aa97e2a86d9ad0a06d3 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 10:10:07 -0500
Subject: [PATCH 07/12] Update loop structure
---
.../scripts/ScriptApproval/index.jelly | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index 6a5d0a49e..accc7343b 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -358,7 +358,11 @@ THE SOFTWARE.
Signatures already approved:
- | ${line} |
+
+
+ | ${line} |
+
+
Signatures already approved assuming permission check:
@@ -366,7 +370,11 @@ THE SOFTWARE.
- | ${line} |
+
+
+ | ${line} |
+
+
@@ -380,7 +388,11 @@ THE SOFTWARE.
- | ${line} |
+
+
+ | ${line} |
+
+
From 3d36adc81fc3f29b696f6b3ed5dd8a28fbee303c Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 12:03:12 -0500
Subject: [PATCH 08/12] Adding comment
---
.../plugins/scriptsecurity/scripts/ScriptApproval/index.jelly | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index accc7343b..599b9ea2c 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -115,11 +115,13 @@ THE SOFTWARE.
newApprovedAclSignatures.appendChild(tr);
});
+ //case where this is the first approvals to be added
if(oldApprovedAclSignatures === null) {
$('aclApprovedSignatures').appendChild(newApprovedAclSignatures);
} else {
$('aclApprovedSignatures').replaceChild(newApprovedAclSignatures, oldApprovedAclSignatures);
}
+ //case where the last approval has been removed
if(both[1].length === 0 && $('aclApprovedSignatures').firstChild !== null) {
$('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
}
From 5aa90d5f00e4c48925ac63f42c8a8a8d31089e5b Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 12:48:14 -0500
Subject: [PATCH 09/12] Removing escaped ampersands
---
.../scripts/ScriptApproval/index.jelly | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index 599b9ea2c..d9b167d63 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -93,8 +93,10 @@ THE SOFTWARE.
} else {
$('approvedSignatures').replaceChild(newApprovedSignatures, oldApprovedSignatures);
}
- if(both[0].length === 0 && $('approvedSignatures').firstChild !== null) {
- $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
+ if(both[0].length === 0) {
+ if($('approvedSignatures').firstChild !== null) {
+ $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
+ }
}
var newApprovedAclSignatures = document.createElement('tbody');
@@ -122,8 +124,10 @@ THE SOFTWARE.
$('aclApprovedSignatures').replaceChild(newApprovedAclSignatures, oldApprovedAclSignatures);
}
//case where the last approval has been removed
- if(both[1].length === 0 && $('aclApprovedSignatures').firstChild !== null) {
- $('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
+ if(both[1].length === 0) {
+ if($('aclApprovedSignatures').firstChild !== null) {
+ $('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
+ }
}
var newApprovedDangerousSignatures = document.createElement('tbody');
@@ -149,8 +153,10 @@ THE SOFTWARE.
} else {
$('dangerousApprovedSignatures').replaceChild(newApprovedDangerousSignatures, oldApprovedDangerousSignatures);
}
- if(both[2].length === 0 && $('dangerousApprovedSignatures').firstChild !== null) {
- $('dangerousApprovedSignatures').removeChild($('dangerousApprovedSignatures').firstChild);
+ if(both[2].length === 0) {
+ if($('dangerousApprovedSignatures').firstChild !== null) {
+ $('dangerousApprovedSignatures').removeChild($('dangerousApprovedSignatures').firstChild);
+ }
}
}
From 2c2176167b786f613a0a608085f75dca3e308e7c Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 13:43:54 -0500
Subject: [PATCH 10/12] Different for loop
---
.../scripts/ScriptApproval/index.jelly | 26 +++++++------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
index d9b167d63..90f580f1d 100644
--- a/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
+++ b/src/main/resources/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/index.jelly
@@ -88,15 +88,15 @@ THE SOFTWARE.
newApprovedSignatures.appendChild(tr);
});
+ //case where this is the first approvals to be added
if(oldApprovedSignatures === null) {
$('approvedSignatures').appendChild(newApprovedSignatures);
} else {
$('approvedSignatures').replaceChild(newApprovedSignatures, oldApprovedSignatures);
}
- if(both[0].length === 0) {
- if($('approvedSignatures').firstChild !== null) {
- $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
- }
+ //case where the last approval has been removed
+ if(both[0].length === 0 && $('approvedSignatures').firstChild !== null) {
+ $('approvedSignatures').removeChild($('approvedSignatures').firstChild);
}
var newApprovedAclSignatures = document.createElement('tbody');
@@ -117,17 +117,13 @@ THE SOFTWARE.
newApprovedAclSignatures.appendChild(tr);
});
- //case where this is the first approvals to be added
if(oldApprovedAclSignatures === null) {
$('aclApprovedSignatures').appendChild(newApprovedAclSignatures);
} else {
$('aclApprovedSignatures').replaceChild(newApprovedAclSignatures, oldApprovedAclSignatures);
}
- //case where the last approval has been removed
- if(both[1].length === 0) {
- if($('aclApprovedSignatures').firstChild !== null) {
- $('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
- }
+ if(both[1].length === 0 && $('aclApprovedSignatures').firstChild !== null) {
+ $('aclApprovedSignatures').removeChild($('aclApprovedSignatures').firstChild);
}
var newApprovedDangerousSignatures = document.createElement('tbody');
@@ -153,10 +149,8 @@ THE SOFTWARE.
} else {
$('dangerousApprovedSignatures').replaceChild(newApprovedDangerousSignatures, oldApprovedDangerousSignatures);
}
- if(both[2].length === 0) {
- if($('dangerousApprovedSignatures').firstChild !== null) {
- $('dangerousApprovedSignatures').removeChild($('dangerousApprovedSignatures').firstChild);
- }
+ if(both[2].length === 0 && $('dangerousApprovedSignatures').firstChild !== null) {
+ $('dangerousApprovedSignatures').removeChild($('dangerousApprovedSignatures').firstChild);
}
}
@@ -189,8 +183,8 @@ THE SOFTWARE.
function clearSelectedSignatures() {
var rows = document.getElementsByClassName('selected');
var signatures = [];
- for(row of rows) {
- signatures.push(row.innerText);
+ for(var i = 0; i < rows.length; i++) {
+ signatures.push(rows[i].firstChild.innerText);
}
mgr.clearSelectedSignatures(signatures, function(r) {
updateApprovedSignatures(r);
From 0778ce1ef3673e4fab82843758be512f3ff662e5 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 13:54:48 -0500
Subject: [PATCH 11/12] Fixing unit test
---
.../plugins/scriptsecurity/scripts/ScriptApprovalTest.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java b/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
index 54b423a63..c2683acda 100644
--- a/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
+++ b/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
@@ -25,6 +25,7 @@
package org.jenkinsci.plugins.scriptsecurity.scripts;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTextArea;
import hudson.util.VersionNumber;
import jenkins.model.Jenkins;
@@ -99,8 +100,8 @@ public void malformedScriptApproval() throws Exception {
assertThat(managePageBodyText, Matchers.containsString("1 dangerous signatures previously approved which ought not have been."));
HtmlPage scriptApprovalPage = managePage.getAnchorByHref("scriptApproval").click();
- HtmlTextArea approvedTextArea = scriptApprovalPage.getHtmlElementById("approvedSignatures");
- HtmlTextArea dangerousTextArea = scriptApprovalPage.getHtmlElementById("dangerousApprovedSignatures");
+ HtmlTable approvedTextArea = scriptApprovalPage.getHtmlElementById("approvedSignatures");
+ HtmlTable dangerousTextArea = scriptApprovalPage.getHtmlElementById("dangerousApprovedSignatures");
assertThat(approvedTextArea.getTextContent(), Matchers.containsString(DANGEROUS_SIGNATURE));
assertThat(dangerousTextArea.getTextContent(), Matchers.containsString(DANGEROUS_SIGNATURE));
From d614a854d4f5f2cecb46bcffde566fbd5c8cd686 Mon Sep 17 00:00:00 2001
From: Eric Bartusch
Date: Tue, 1 May 2018 13:55:07 -0500
Subject: [PATCH 12/12] Remove unused import
---
.../plugins/scriptsecurity/scripts/ScriptApprovalTest.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java b/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
index c2683acda..af821f5d7 100644
--- a/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
+++ b/src/test/java/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApprovalTest.java
@@ -26,7 +26,6 @@
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
-import com.gargoylesoftware.htmlunit.html.HtmlTextArea;
import hudson.util.VersionNumber;
import jenkins.model.Jenkins;
import org.hamcrest.Matchers;