Skip to content

Commit a04bc24

Browse files
committed
Fixed v4 metadata and added tests
1 parent dc65abe commit a04bc24

2 files changed

Lines changed: 48 additions & 3 deletions

File tree

src/main/java/com/uid2/operator/service/TokenUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public static byte[] getAdvertisingIdV3FromIdentityHash(IdentityScope scope, Ide
5959
}
6060

6161
public static byte[] getAdvertisingIdV4(IdentityScope scope, IdentityType type, IdentityEnvironment environment, byte[] firstLevelHash, SaltEntry.KeyMaterial encryptingKey) throws Exception {
62-
byte metadata = (byte) (encodeIdentityVersion(IdentityVersion.V4) | encodeIdentityScope(scope) | encodeIdentityType(type) | encodeIdentityEnvironment(environment));
62+
byte metadata = encodeV4Metadata(scope, type, environment);
6363
return V4TokenUtils.buildAdvertisingIdV4(metadata, firstLevelHash, encryptingKey.id(), encryptingKey.key(), encryptingKey.salt());
6464
}
6565

@@ -71,6 +71,10 @@ public static byte[] getAdvertisingIdV4FromIdentityHash(IdentityScope scope, Ide
7171
return getAdvertisingIdV4(scope, type, environment, getFirstLevelHashFromIdentityHash(identityString, firstLevelSalt), encryptingKey);
7272
}
7373

74+
public static byte encodeV4Metadata(IdentityScope scope, IdentityType type, IdentityEnvironment environment) {
75+
return (byte) (encodeIdentityVersion(IdentityVersion.V4) | encodeIdentityScope(scope) | encodeIdentityType(type) | encodeIdentityEnvironment(environment));
76+
}
77+
7478
public static byte encodeIdentityScope(IdentityScope identityScope) {
7579
return (byte) (identityScope.getValue() << 4);
7680
}
@@ -80,10 +84,10 @@ public static byte encodeIdentityType(IdentityType identityType) {
8084
}
8185

8286
public static byte encodeIdentityVersion(IdentityVersion identityVersion) {
83-
return (byte) (identityVersion.getValue() << 6);
87+
return (byte) (identityVersion.getValue() << 5);
8488
}
8589

8690
public static byte encodeIdentityEnvironment(IdentityEnvironment identityEnvironment) {
87-
return (byte) (identityEnvironment.getValue());
91+
return (byte) (identityEnvironment.getValue() << 6);
8892
}
8993
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.uid2.operator.service;
2+
3+
import com.uid2.operator.model.IdentityEnvironment;
4+
import com.uid2.operator.model.IdentityScope;
5+
import com.uid2.operator.model.IdentityType;
6+
import org.junit.jupiter.params.ParameterizedTest;
7+
import org.junit.jupiter.params.provider.Arguments;
8+
import org.junit.jupiter.params.provider.MethodSource;
9+
10+
import java.util.stream.Stream;
11+
12+
import static org.junit.jupiter.api.Assertions.assertEquals;
13+
14+
class TokenUtilsTest {
15+
@ParameterizedTest
16+
@MethodSource("v4Metadata")
17+
void testEncodeV4Metadata(IdentityScope scope, IdentityType type, IdentityEnvironment environment, byte expectedMetadata) {
18+
byte metadata = TokenUtils.encodeV4Metadata(scope, type, environment);
19+
20+
assertEquals(expectedMetadata, metadata);
21+
}
22+
23+
private static Stream<Arguments> v4Metadata() {
24+
return Stream.of(
25+
Arguments.of(IdentityScope.UID2, IdentityType.Email, IdentityEnvironment.TEST, (byte) 0b00100000),
26+
Arguments.of(IdentityScope.UID2, IdentityType.Phone, IdentityEnvironment.TEST, (byte) 0b00100100),
27+
Arguments.of(IdentityScope.EUID, IdentityType.Email, IdentityEnvironment.TEST, (byte) 0b00110000),
28+
Arguments.of(IdentityScope.EUID, IdentityType.Phone, IdentityEnvironment.TEST, (byte) 0b00110100),
29+
30+
Arguments.of(IdentityScope.UID2, IdentityType.Email, IdentityEnvironment.INTEG, (byte) 0b01100000),
31+
Arguments.of(IdentityScope.UID2, IdentityType.Phone, IdentityEnvironment.INTEG, (byte) 0b01100100),
32+
Arguments.of(IdentityScope.EUID, IdentityType.Email, IdentityEnvironment.INTEG, (byte) 0b01110000),
33+
Arguments.of(IdentityScope.EUID, IdentityType.Phone, IdentityEnvironment.INTEG, (byte) 0b01110100),
34+
35+
Arguments.of(IdentityScope.UID2, IdentityType.Email, IdentityEnvironment.PROD, (byte) 0b10100000),
36+
Arguments.of(IdentityScope.UID2, IdentityType.Phone, IdentityEnvironment.PROD, (byte) 0b10100100),
37+
Arguments.of(IdentityScope.EUID, IdentityType.Email, IdentityEnvironment.PROD, (byte) 0b10110000),
38+
Arguments.of(IdentityScope.EUID, IdentityType.Phone, IdentityEnvironment.PROD, (byte) 0b10110100)
39+
);
40+
}
41+
}

0 commit comments

Comments
 (0)