Initial commit

This commit is contained in:
2024-04-07 19:41:57 -04:00
parent 2b3212cb44
commit 8f0d1c64bd
95 changed files with 6787 additions and 45 deletions

View File

@@ -0,0 +1,426 @@
package com.mattrixwv.cipherstream.utils;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.mattrixwv.cipherstream.exception.InvalidCipherParameterException;
@Tag("unit-test")
@ExtendWith(MockitoExtension.class)
public class CipherParameterUtilTest{
private static final ObjectMapper objectMapper = new ObjectMapper();
@Test
public void testVerifyUniversalParams(){
ObjectNode params = setUniversalParams();
//Missing Capitals
params.remove(CipherParameterUtil.PRESERVE_CAPITALS);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
//Integer Capitals
params.put(CipherParameterUtil.PRESERVE_CAPITALS, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
params.put(CipherParameterUtil.PRESERVE_CAPITALS, true);
//Missing Whitespace
params.remove(CipherParameterUtil.PRESERVE_WHITESPACE);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
//Integer Whitespace
params.put(CipherParameterUtil.PRESERVE_WHITESPACE, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
params.put(CipherParameterUtil.PRESERVE_WHITESPACE, true);
//Missing Symbols
params.remove(CipherParameterUtil.PRESERVE_SYMBOLS);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
//Integer Symbols
params.put(CipherParameterUtil.PRESERVE_SYMBOLS, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
params.put(CipherParameterUtil.PRESERVE_SYMBOLS, true);
//Missing Input
params.remove(CipherParameterUtil.INPUT_STRING);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
//Integer Input
params.put(CipherParameterUtil.INPUT_STRING, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyUniversalParams(params);
});
params.put(CipherParameterUtil.INPUT_STRING, "Input String");
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyUniversalParams(params);
});
}
@Test
public void testVerifyParamsWithKeyword(){
ObjectNode params = setUniversalParams();
//Missing Keyword
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyParamsWithKeyword(params);
});
//Integer Keyword
params.put(CipherParameterUtil.KEYWORD, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyParamsWithKeyword(params);
});
//Full
params.put(CipherParameterUtil.KEYWORD, CipherParameterUtil.KEYWORD);
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyParamsWithKeyword(params);
});
}
@Test
public void testVerifyCaesarParams(){
ObjectNode params = setUniversalParams();
//Missing shift
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyCaesarParams(params);
});
//String shift
params.put(CipherParameterUtil.CAESAR_SHIFT_AMOUNT, "1");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyCaesarParams(params);
});
//Full
params.put(CipherParameterUtil.CAESAR_SHIFT_AMOUNT, 1);
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyCaesarParams(params);
});
}
@Test
public void testVerifyAffineParams(){
ObjectNode params = setUniversalParams();
//Missing Key1
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyAffineParams(params);
});
//String Key1
params.put(CipherParameterUtil.AFFINE_KEY_1, "1");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyAffineParams(params);
});
params.put(CipherParameterUtil.AFFINE_KEY_1, 1);
//Missing Key2
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyAffineParams(params);
});
//String Key2
params.put(CipherParameterUtil.AFFINE_KEY_2, "1");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyAffineParams(params);
});
params.put(CipherParameterUtil.AFFINE_KEY_2, 1);
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyAffineParams(params);
});
}
@Test
public void testVerifyAtbashParams(){
ObjectNode params = setUniversalParams();
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyAtbashParams(params);
});
}
@Test
public void testVerifyBaconianParams(){
ObjectNode params = objectMapper.createObjectNode();
//Missing Capitals
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaconianParams(params);
});
//Integer Capitals
params.put(CipherParameterUtil.PRESERVE_CAPITALS, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaconianParams(params);
});
params.put(CipherParameterUtil.PRESERVE_CAPITALS, true);
//Missing Input
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaconianParams(params);
});
//Integer Input
params.put(CipherParameterUtil.INPUT_STRING, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaconianParams(params);
});
params.put(CipherParameterUtil.INPUT_STRING, "Input String");
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyBaconianParams(params);
});
}
@Test
public void testVerifyBaseXParams(){
ObjectNode params = setUniversalParams();
//Missing Input
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaseXParams(params);
});
//Integer Input
params.put(CipherParameterUtil.INPUT_STRING, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaseXParams(params);
});
params.put(CipherParameterUtil.INPUT_STRING, CipherParameterUtil.INPUT_STRING);
//Missing BaseX
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaseXParams(params);
});
//String BaseX
params.put(CipherParameterUtil.BASE_X_BASE, "2");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyBaseXParams(params);
});
params.put(CipherParameterUtil.BASE_X_BASE, 2);
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyBaseXParams(params);
});
}
@Test
public void testVerifySquareKeyword(){
ObjectNode params = setUniversalParams();
//Missing Keyword
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifySquareKeyword(params);
});
//Integer Keyword
params.put(CipherParameterUtil.SQUARE_KEYWORD, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifySquareKeyword(params);
});
//Full
params.put(CipherParameterUtil.SQUARE_KEYWORD, "squareKeyword");
assertDoesNotThrow(() -> {
CipherParameterUtil.verifySquareKeyword(params);
});
}
@Test
public void testVerifyHillParams(){
ObjectNode params = setUniversalParams();
//Missing Key
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyHillParams(params);
});
//Integer Key
params.put(CipherParameterUtil.HILL_KEY, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyHillParams(params);
});
//1D Array Key
params.set(CipherParameterUtil.HILL_KEY, objectMapper.valueToTree(new int[]{1}));
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyHillParams(params);
});
//String Array Key
params.set(CipherParameterUtil.HILL_KEY, objectMapper.valueToTree(new String[][]{{"test"}}));
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyHillParams(params);
});
//Full
params.set(CipherParameterUtil.HILL_KEY, objectMapper.valueToTree(new int[][]{{1}}));
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyHillParams(params);
});
}
@Test
public void testVerifyMorseParams(){
ObjectNode params = objectMapper.createObjectNode();
//Missing Input
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyMorseParams(params);
});
//Integer Input
params.put(CipherParameterUtil.INPUT_STRING, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyMorseParams(params);
});
params.put(CipherParameterUtil.INPUT_STRING, "Input String");
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyMorseParams(params);
});
}
@Test
public void testVerifyPolybiusParams(){
ObjectNode params = objectMapper.createObjectNode();
//Missing Whitespace
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
//String Whitespace
params.put(CipherParameterUtil.PRESERVE_WHITESPACE, "true");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
params.put(CipherParameterUtil.PRESERVE_WHITESPACE, true);
//Missing Symbols
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
//String Symbols
params.put(CipherParameterUtil.PRESERVE_SYMBOLS, "true");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
params.put(CipherParameterUtil.PRESERVE_SYMBOLS, true);
//Missing Input
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
//Integer Input
params.put(CipherParameterUtil.INPUT_STRING, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
params.put(CipherParameterUtil.INPUT_STRING, "");
//Missing Keyword
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
//Integer Keyword
params.put(CipherParameterUtil.KEYWORD, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
params.put(CipherParameterUtil.KEYWORD, CipherParameterUtil.KEYWORD);
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyPolybiusParams(params);
});
}
@Test
public void testVerifyRailFenceParams(){
ObjectNode params = setUniversalParams();
//Missing Rails
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyRailFenceParams(params);
});
//String rails
params.put(CipherParameterUtil.RAIL_FENCE_RAILS, "1");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyRailFenceParams(params);
});
params.put(CipherParameterUtil.RAIL_FENCE_RAILS, 1);
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyRailFenceParams(params);
});
}
@Test
public void testVerifyTrifidParams(){
ObjectNode params = setUniversalParams();
params.put(CipherParameterUtil.KEYWORD, CipherParameterUtil.KEYWORD);
//Missing fill
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyTrifidParams(params);
});
//Integer fill
params.put(CipherParameterUtil.TRIFID_FILL, 1);
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyTrifidParams(params);
});
//String fill
params.put(CipherParameterUtil.TRIFID_FILL, "Input");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyTrifidParams(params);
});
params.put(CipherParameterUtil.TRIFID_FILL, "+");
//Missing length
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyTrifidParams(params);
});
//String length
params.put(CipherParameterUtil.TRIFID_GROUP_LENGTH, "2");
assertThrows(InvalidCipherParameterException.class, () -> {
CipherParameterUtil.verifyTrifidParams(params);
});
params.put(CipherParameterUtil.TRIFID_GROUP_LENGTH, 2);
//Full
assertDoesNotThrow(() -> {
CipherParameterUtil.verifyTrifidParams(params);
});
}
private ObjectNode setUniversalParams(){
ObjectNode universalParams = objectMapper.createObjectNode();
universalParams.put(CipherParameterUtil.PRESERVE_CAPITALS, true);
universalParams.put(CipherParameterUtil.PRESERVE_WHITESPACE, true);
universalParams.put(CipherParameterUtil.PRESERVE_SYMBOLS, true);
universalParams.put(CipherParameterUtil.INPUT_STRING, "Input String");
return universalParams;
}
}