11package uk .gov .objecthash ;
2- import static org .junit .Assert .assertEquals ;
3- import static org .junit .Assert .assertNotEquals ;
2+ import org .junit .Test ;
43
54import java .nio .charset .StandardCharsets ;
65import java .time .Instant ;
1312import java .util .Map ;
1413import java .util .Set ;
1514
16- import org .junit .Test ;
15+ import static org .junit .Assert .assertEquals ;
16+ import static org .junit .Assert .assertNotEquals ;
1717
1818
1919public class ObjectHashTest {
20-
20+
2121 @ Test
22- public void hashesStrings () {
22+ public void hashesStrings () {
2323 assertEquals (ObjectHash .toHexDigest ("Hello, Ruby!" ), "c92765c1350e6df6800dbadedb3420f398d5f3c7e38a3da48aadb3332280f85f" );
2424 }
2525
@@ -45,19 +45,19 @@ public void doesNotNormaliseByteArrays() {
4545
4646 @ Test
4747 public void hashesIntegers () {
48- assertEquals (ObjectHash .toHexDigest (-1 ), "f105b11df43d5d321f5c773ef904af979024887b4d2b0fab699387f59e2ff01e" );
49- assertEquals (ObjectHash .toHexDigest (0 ), "a4e167a76a05add8a8654c169b07b0447a916035aef602df103e8ae0fe2ff390" );
50- assertEquals (ObjectHash .toHexDigest (10 ), "73f6128db300f3751f2e509545be996d162d20f9e030864632f85e34fd0324ce" );
51- assertEquals (ObjectHash .toHexDigest (1000 ), "a3346d18105ef801c3598fec426dcc5d4be9d0374da5343f6c8dcbdf24cb8e0b" );
52- }
53-
48+ assertEquals (ObjectHash .toHexDigest (-1 ), "f105b11df43d5d321f5c773ef904af979024887b4d2b0fab699387f59e2ff01e" );
49+ assertEquals (ObjectHash .toHexDigest (0 ), "a4e167a76a05add8a8654c169b07b0447a916035aef602df103e8ae0fe2ff390" );
50+ assertEquals (ObjectHash .toHexDigest (10 ), "73f6128db300f3751f2e509545be996d162d20f9e030864632f85e34fd0324ce" );
51+ assertEquals (ObjectHash .toHexDigest (1000 ), "a3346d18105ef801c3598fec426dcc5d4be9d0374da5343f6c8dcbdf24cb8e0b" );
52+ }
53+
5454 @ Test
5555 public void hashesTimestamps () {
5656 var date = LocalDate .parse ("2000-01-01" );
5757 Instant instant = date .atStartOfDay (ZoneId .of ("UTC" )).toInstant ();
58- assertEquals (ObjectHash .toHexDigest (instant ), "cb34961d3d1a44386a73c37eb64c72a2b61ff40fc108abca92ef07c4954a1645" );
58+ assertEquals (ObjectHash .toHexDigest (instant ), "cb34961d3d1a44386a73c37eb64c72a2b61ff40fc108abca92ef07c4954a1645" );
5959 }
60-
60+
6161 @ Test
6262 public void hashesDict () {
6363 Map <String , ObjectHashable > data = new HashMap <>();
@@ -136,4 +136,23 @@ public void hashesDictOfMixedTypes() {
136136
137137 assertEquals ("45d9392ad17cead3fa46501eba3e5ac237cb46a39f1e175905f00ef6a6667257" , digest );
138138 }
139+
140+ @ Test
141+ public void returnsSuppliedHashIfRedacted () {
142+ StringValue original = new StringValue ("hello" );
143+ StringValue redacted = new StringValue ("**REDACTED**" + original .hexDigest ());
144+
145+ assertEquals (original .hexDigest (), redacted .hexDigest ());
146+ }
147+
148+ @ Test
149+ public void hashesKnownRedactedHash () {
150+ assertEquals (ObjectHash .toHexDigest ("**REDACTED**2a42a9c91b74c0032f6b8000a2c9c5bcca5bb298f004e8eff533811004dea511" ), "2a42a9c91b74c0032f6b8000a2c9c5bcca5bb298f004e8eff533811004dea511" );
151+ }
152+
153+ @ Test
154+ public void hashesInvalidRedactedValues () {
155+ assertEquals (ObjectHash .toHexDigest ("**REDACTED**banana" ), "525b975c2979f427dcb79db8992035a9c2157a3c54492050753b9af552756c7a" );
156+ }
157+
139158}
0 commit comments