blob: 2936464e1813753b42e6fb437118e70ce79524df [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.metron.stellar.common.encoding;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class EncodingsTest {
public static final String STRING_FIXTURE = "Hello World";
public static final String STRING_FIXTURE_PLUS_NULL = "Hello World\0";
public static final String BASE32HEX_FIXTURE = "91IMOR3F41BMUSJCCG======";
public static final String BASE32_FIXTURE = "JBSWY3DPEBLW64TMMQ======";
public static final String BASE64_FIXTURE = "SGVsbG8gV29ybGQ=";
public static final String BINARY_FIXTURE = "0110010001101100011100100110111101010111001000000110111101101100011011000110010101001000";
public static final String HEX_FIXTURE = "48656c6c6f20576f726c64";
@Test
public void is() {
// base32
assertTrue(Encodings.BASE32.is(BASE32_FIXTURE));
assertFalse(Encodings.BASE32.is(STRING_FIXTURE));
// base32 hex
assertTrue(Encodings.BASE32HEX.is(BASE32HEX_FIXTURE));
assertFalse(Encodings.BASE32HEX.is(STRING_FIXTURE));
// base 64
assertTrue(Encodings.BASE64.is(BASE64_FIXTURE));
assertFalse(Encodings.BASE64.is(STRING_FIXTURE + "\0"));
// binary
assertTrue(Encodings.BINARY.is(BINARY_FIXTURE));
assertFalse(Encodings.BINARY.is(STRING_FIXTURE));
// hex
assertTrue(Encodings.HEX.is(HEX_FIXTURE));
assertFalse(Encodings.HEX.is("AAA"));
}
@Test
public void decode() {
assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(BASE32_FIXTURE));
assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(BASE32HEX_FIXTURE));
assertEquals(STRING_FIXTURE,Encodings.BASE64.decode(BASE64_FIXTURE));
assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(BINARY_FIXTURE));
assertEquals(STRING_FIXTURE,Encodings.HEX.decode(HEX_FIXTURE));
// these codecs will just decode away... and return garbage without verification
assertNotEquals(STRING_FIXTURE,Encodings.BASE32.decode(STRING_FIXTURE));
assertNotEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(STRING_FIXTURE));
assertNotEquals(STRING_FIXTURE,Encodings.BASE64.decode(STRING_FIXTURE));
// these codecs will fail to decode and return the original string without
// verification
assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(STRING_FIXTURE));
assertEquals(STRING_FIXTURE,Encodings.HEX.decode(STRING_FIXTURE));
}
@Test
public void decodeWithVerify() {
assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(BASE32_FIXTURE,true));
assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(BASE32HEX_FIXTURE,true));
assertEquals(STRING_FIXTURE,Encodings.BASE64.decode(BASE64_FIXTURE,true));
assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(BINARY_FIXTURE,true));
assertEquals(STRING_FIXTURE,Encodings.HEX.decode(HEX_FIXTURE,true));
// with verification, we will get back the original string
assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(STRING_FIXTURE,true));
assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(STRING_FIXTURE,true));
// if the string IS coincidentally compatable with base64, then it will decode away
assertNotEquals(STRING_FIXTURE,Encodings.BASE64.decode(STRING_FIXTURE,true));
// if the string would fail... then we get the original
assertEquals(STRING_FIXTURE + "\0",Encodings.BASE64.decode(STRING_FIXTURE + "\0",true));
assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(STRING_FIXTURE,true));
assertEquals(STRING_FIXTURE,Encodings.HEX.decode(STRING_FIXTURE,true));
}
@Test
public void testEncode() {
assertEquals(BASE32_FIXTURE,Encodings.BASE32.encode(STRING_FIXTURE));
assertEquals(BASE32HEX_FIXTURE,Encodings.BASE32HEX.encode(STRING_FIXTURE));
assertEquals(BASE64_FIXTURE,Encodings.BASE64.encode(STRING_FIXTURE));
assertEquals(BINARY_FIXTURE,Encodings.BINARY.encode(STRING_FIXTURE));
assertEquals(HEX_FIXTURE,Encodings.HEX.encode(STRING_FIXTURE));
}
}