[JENKINS-65611] Ensure facets are modifiable (#5486)

* Ensure facets are modifiable
* Add check to ensure removal
* Fix spotless warnings

Authored-by: res0nance <res0nance@users.noreply.github.com>
This commit is contained in:
Raihaan Shouhell authored and GitHub committed 2021-05-12 10:37:55 -06:00
1 parent a1175b932e
commit c8beec6d64
2 files changed
+22 -3

No files matched your search

@@ -67,8 +67,6 @@ import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
import org.springframework.security.access.AccessDeniedException;
@@ -1184,7 +1182,7 @@ public class Fingerprint implements ModelObject, Saveable {
return new AbstractCollection<FingerprintFacet>() {
@Override
public Iterator<FingerprintFacet> iterator() {
return Stream.concat(StreamSupport.stream(facets.spliterator(), false), transientFacets.stream()).iterator();
return Iterators.sequence(facets.iterator(), transientFacets.iterator());
}
@Override
@@ -45,6 +45,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
@@ -413,6 +414,26 @@ public class FingerprintTest {
assertEquals(200, page2.getWebResponse().getStatusCode());
}
@Test
@Issue("JENKINS-65611")
public void canModifyFacets() {
Fingerprint fingerprint = new Fingerprint(new Fingerprint.BuildPtr("foo", 3),
"stuff&more.jar", Util.fromHexString(SOME_MD5));
TestFacet testFacet = new TestFacet(fingerprint, 0, "test");
assertThat(fingerprint.getFacets().size(), is(0));
fingerprint.getFacets().add(testFacet);
assertThat(fingerprint.getFacets().size(), is(1));
assertTrue(fingerprint.getFacets().contains(testFacet));
fingerprint.getFacets().remove(testFacet);
assertThat(fingerprint.getFacets().size(), is(0));
fingerprint.getFacets().add(testFacet);
assertThat(fingerprint.getFacets().size(), is(1));
Iterator<FingerprintFacet> itr = fingerprint.getFacets().iterator();
itr.next();
itr.remove();
assertThat(fingerprint.getFacets().size(), is(0));
}
@Test
@Issue("SECURITY-2023")
public void checkArbitraryEmptyFileExistence() throws Exception {