1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2024-11-23 12:52:07 +01:00

Add NotationRegistryTest

This commit is contained in:
Paul Schaub 2021-02-25 19:57:18 +01:00
parent df38651487
commit 577ee143b5
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
2 changed files with 65 additions and 0 deletions

View file

@ -41,6 +41,12 @@ public final class NotationRegistry {
return INSTANCE; return INSTANCE;
} }
/**
* Add a known notation name into the registry.
* This will cause critical notations with that name to no longer invalidate the signature.
*
* @param notationName name of the notation
*/
public void addKnownNotation(String notationName) { public void addKnownNotation(String notationName) {
if (notationName == null) { if (notationName == null) {
throw new NullPointerException("Notation name MUST NOT be null."); throw new NullPointerException("Notation name MUST NOT be null.");
@ -48,7 +54,20 @@ public final class NotationRegistry {
knownNotations.add(notationName); knownNotations.add(notationName);
} }
/**
* Return true if the notation name is registered in the registry.
*
* @param notationName name of the notation
* @return true if notation is known, false otherwise.
*/
public boolean isKnownNotation(String notationName) { public boolean isKnownNotation(String notationName) {
return knownNotations.contains(notationName); return knownNotations.contains(notationName);
} }
/**
* Clear all known notations from the registry.
*/
public void clear() {
knownNotations.clear();
}
} }

View file

@ -0,0 +1,46 @@
/*
* Copyright 2021 Paul Schaub.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.pgpainless.util;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class NotationRegistryTest {
@BeforeEach
public void setup() {
NotationRegistry.getInstance().clear();
}
@Test
public void notationIsKnownOnceAddedAndUnknownOnceCleared() {
NotationRegistry registry = NotationRegistry.getInstance();
assertFalse(registry.isKnownNotation("proof@metacode.biz"), "Notation is initially not known.");
assertFalse(registry.isKnownNotation("unkown@notation.data"));
registry.addKnownNotation("proof@metacode.biz");
assertTrue(registry.isKnownNotation("proof@metacode.biz"), "Notation is known after it has been added to the registry.");
assertFalse(registry.isKnownNotation("unknown@notation.data"));
registry.clear();
assertFalse(registry.isKnownNotation("proof@metacode.biz"), "Notation is no longer known after registry is cleared.");
assertFalse(registry.isKnownNotation("unknown@notation.data"));
}
}