From 8e4412b83d236ff8f54c4a9fe284db021a83cd52 Mon Sep 17 00:00:00 2001 From: Katherine Chen Date: Thu, 10 Apr 2025 08:41:07 +1000 Subject: [PATCH 1/2] Remove old participant --- src/test/java/app/component/Operator.java | 38 ++++++------------- .../operator/V2ApiOperatorLocalOnlyTest.java | 2 +- .../operator/V2ApiOperatorPublicOnlyTest.java | 14 +++---- .../suite/operator/V2ApiOperatorTest.java | 16 ++++---- src/test/java/suite/optout/OptoutTest.java | 25 +----------- .../suite/validator/V2ApiValidatorTest.java | 6 +-- 6 files changed, 32 insertions(+), 69 deletions(-) diff --git a/src/test/java/app/component/Operator.java b/src/test/java/app/component/Operator.java index 99ebf3f..29bad95 100644 --- a/src/test/java/app/component/Operator.java +++ b/src/test/java/app/component/Operator.java @@ -98,7 +98,6 @@ private record V2Envelope(String envelope, byte[] nonce) { @Getter private final Type type; private final PublisherUid2Client publisherClient; - private final PublisherUid2Client oldPublisherClient; private final UID2Client dspClient; public Operator(String host, Integer port, String name, Type type) { @@ -111,11 +110,6 @@ public Operator(String host, Integer port, String name, Type type) { CLIENT_API_KEY, CLIENT_API_SECRET ); - this.oldPublisherClient = new PublisherUid2Client( - getBaseUrl(), - CLIENT_API_KEY_BEFORE_OPTOUT_CUTOFF, - CLIENT_API_SECRET_BEFORE_OPTOUT_CUTOFF - ); this.dspClient = new UID2Client( getBaseUrl(), CLIENT_API_KEY, @@ -128,7 +122,7 @@ public Operator(String host, String name, Type type) { this(host, null, name, type); } - public TokenGenerateResponse v2TokenGenerate(String type, String identity, boolean asOldParticipant) { + public TokenGenerateResponse v2TokenGenerate(String type, String identity) { TokenGenerateInput token; if ("email".equals(type)) { @@ -143,18 +137,8 @@ public TokenGenerateResponse v2TokenGenerate(String type, String identity, boole token = token.withTransparencyAndConsentString(TC_STRING); } - if (!asOldParticipant) { - token = token.doNotGenerateTokensForOptedOut(); - return publisherClient.generateTokenResponse(token); - } else { - return oldPublisherClient.generateTokenResponse(token); - } - } - - public JsonNode v2TokenGenerateUsingPayload(String payload, boolean asOldParticipant) throws Exception { - V2Envelope envelope = v2CreateEnvelope(payload, getClientApiSecret(asOldParticipant)); - String encryptedResponse = HttpClient.post(getBaseUrl() + "/v2/token/generate", envelope.envelope(), getClientApiKey(asOldParticipant)); - return v2DecryptEncryptedResponse(encryptedResponse, envelope.nonce(), getClientApiSecret(asOldParticipant)); + token = token.doNotGenerateTokensForOptedOut(); + return publisherClient.generateTokenResponse(token); } public JsonNode v2ClientSideTokenGenerate(String requestBody, boolean useValidOrigin) throws Exception { @@ -280,10 +264,10 @@ public DecryptionResponse v2TokenDecrypt(String token) throws UID2ClientExceptio return dspClient.decrypt(token); } - public JsonNode v2IdentityMap(String payload, boolean asOldParticipant) throws Exception { - V2Envelope envelope = v2CreateEnvelope(payload, getClientApiSecret(asOldParticipant)); - String encryptedResponse = HttpClient.post(getBaseUrl() + "/v2/identity/map", envelope.envelope(), getClientApiKey(asOldParticipant)); - return v2DecryptEncryptedResponse(encryptedResponse, envelope.nonce(), getClientApiSecret(asOldParticipant)); + public JsonNode v2IdentityMap(String payload) throws Exception { + V2Envelope envelope = v2CreateEnvelope(payload, getClientApiSecret()); + String encryptedResponse = HttpClient.post(getBaseUrl() + "/v2/identity/map", envelope.envelope(), getClientApiKey()); + return v2DecryptEncryptedResponse(encryptedResponse, envelope.nonce(), getClientApiSecret()); } public JsonNode v2IdentityBuckets(String payload) throws Exception { @@ -304,12 +288,12 @@ public JsonNode v2KeySharing() throws Exception { return v2DecryptEncryptedResponse(encryptedResponse, envelope.nonce(), CLIENT_API_SECRET); } - private String getClientApiKey(boolean asOldParticipant) { - return asOldParticipant ? CLIENT_API_KEY_BEFORE_OPTOUT_CUTOFF : CLIENT_API_KEY; + private String getClientApiKey() { + return CLIENT_API_KEY; } - private String getClientApiSecret(boolean asOldParticipant) { - return asOldParticipant ? CLIENT_API_SECRET_BEFORE_OPTOUT_CUTOFF : CLIENT_API_SECRET; + private String getClientApiSecret() { + return CLIENT_API_SECRET; } private V2Envelope v2CreateEnvelope(String payload, String secret) throws Exception { diff --git a/src/test/java/suite/operator/V2ApiOperatorLocalOnlyTest.java b/src/test/java/suite/operator/V2ApiOperatorLocalOnlyTest.java index 980cbf7..2c3aa9d 100644 --- a/src/test/java/suite/operator/V2ApiOperatorLocalOnlyTest.java +++ b/src/test/java/suite/operator/V2ApiOperatorLocalOnlyTest.java @@ -66,7 +66,7 @@ public void testSharing(TestData.Client sender, Operator senderOperator, TestDat "suite.operator.TestData#tokenEmailArgsLocalMockOptout" }) public void testV2TokenGenerateLocalMockOptout(String label, Operator operator, String operatorName, String type, String identity) { - TokenGenerateResponse tokenGenerateResponse = operator.v2TokenGenerate(type, identity, false); + TokenGenerateResponse tokenGenerateResponse = operator.v2TokenGenerate(type, identity); IdentityTokens currentIdentity = tokenGenerateResponse.getIdentity(); assertThat(currentIdentity).isNull(); diff --git a/src/test/java/suite/operator/V2ApiOperatorPublicOnlyTest.java b/src/test/java/suite/operator/V2ApiOperatorPublicOnlyTest.java index db2a87a..ef451c6 100644 --- a/src/test/java/suite/operator/V2ApiOperatorPublicOnlyTest.java +++ b/src/test/java/suite/operator/V2ApiOperatorPublicOnlyTest.java @@ -27,7 +27,7 @@ public void testV2SpecialRefreshOptoutOldParticipant(String label, Operator oper return; } - IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity, true).getIdentity(); + IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity).getIdentity(); TokenRefreshResponse refreshed = operator.v2TokenRefresh(currentIdentity); assertTrue(refreshed.isOptout()); @@ -38,13 +38,13 @@ public void testV2SpecialRefreshOptoutOldParticipant(String label, Operator oper "suite.operator.TestData#tokenEmailArgsSpecialOptout", "suite.operator.TestData#tokenPhoneArgsSpecialOptout" }) - public void testV2IdentityMapSpecialOptoutParamTrue(String label, Operator operator, String operatorName, String type, String identity, boolean asOldParticipant) throws Exception { + public void testV2IdentityMapSpecialOptoutParamTrue(String label, Operator operator, String operatorName, String type, String identity) throws Exception { if (isPrivateOperator(operator)) { return; } String payload = "{\"" + type + "\": [\"" + identity + "\"], \"optout_check\":1}"; - JsonNode response = operator.v2IdentityMap(payload, asOldParticipant); + JsonNode response = operator.v2IdentityMap(payload); assertThat(response.get("body").get("unmapped").get(0).get("reason").asText()).isEqualTo("optout"); } @@ -54,13 +54,13 @@ public void testV2IdentityMapSpecialOptoutParamTrue(String label, Operator opera "suite.operator.TestData#tokenEmailArgsSpecialOptout", "suite.operator.TestData#tokenPhoneArgsSpecialOptout" }) - public void testV2IdentityMapSpecialOptoutParamFalse(String label, Operator operator, String operatorName, String type, String identity, boolean asOldParticipant) throws Exception { + public void testV2IdentityMapSpecialOptoutParamFalse(String label, Operator operator, String operatorName, String type, String identity) throws Exception { if (isPrivateOperator(operator)) { return; } String payload = "{\"" + type + "\": [\"" + identity + "\"], \"optout_check\":0}"; - JsonNode response = operator.v2IdentityMap(payload, asOldParticipant); + JsonNode response = operator.v2IdentityMap(payload); assertThat(response.get("body").get("unmapped").get(0).get("reason").asText()).isEqualTo("optout"); } @@ -70,13 +70,13 @@ public void testV2IdentityMapSpecialOptoutParamFalse(String label, Operator oper "suite.operator.TestData#tokenEmailArgsSpecialOptout", "suite.operator.TestData#tokenPhoneArgsSpecialOptout" }) - public void testV2IdentityMapSpecialOptoutNoParam(String label, Operator operator, String operatorName, String type, String identity, boolean asOldParticipant) throws Exception { + public void testV2IdentityMapSpecialOptoutNoParam(String label, Operator operator, String operatorName, String type, String identity) throws Exception { if (isPrivateOperator(operator)) { return; } String payload = "{\"" + type + "\": [\"" + identity + "\"]}"; - JsonNode response = operator.v2IdentityMap(payload, asOldParticipant); + JsonNode response = operator.v2IdentityMap(payload); assertThat(response.get("body").get("unmapped").get(0).get("reason").asText()).isEqualTo("optout"); } diff --git a/src/test/java/suite/operator/V2ApiOperatorTest.java b/src/test/java/suite/operator/V2ApiOperatorTest.java index af711d1..1a5430d 100644 --- a/src/test/java/suite/operator/V2ApiOperatorTest.java +++ b/src/test/java/suite/operator/V2ApiOperatorTest.java @@ -35,7 +35,7 @@ public class V2ApiOperatorTest { "suite.operator.TestData#tokenPhoneArgs" }) public void testV2TokenGenerate(String label, Operator operator, String operatorName, String type, String identity) throws Exception { - TokenGenerateResponse tokenGenerateResponse = operator.v2TokenGenerate(type, identity, false); + TokenGenerateResponse tokenGenerateResponse = operator.v2TokenGenerate(type, identity); IdentityTokens currentIdentity = tokenGenerateResponse.getIdentity(); DecryptionResponse decrypted = operator.v2TokenDecrypt(currentIdentity.getAdvertisingToken()); @@ -47,8 +47,8 @@ public void testV2TokenGenerate(String label, Operator operator, String operator "suite.operator.TestData#tokenEmailArgsSpecialOptout", "suite.operator.TestData#tokenPhoneArgsSpecialOptout" }) - public void testV2TokenGenerateSpecialOptout(String label, Operator operator, String operatorName, String type, String identity, boolean asOldParticipant) { - TokenGenerateResponse tokenGenerateResponse = operator.v2TokenGenerate(type, identity, false); + public void testV2TokenGenerateSpecialOptout(String label, Operator operator, String operatorName, String type, String identity) { + TokenGenerateResponse tokenGenerateResponse = operator.v2TokenGenerate(type, identity); assertTrue(tokenGenerateResponse.isOptout()); } @@ -59,7 +59,7 @@ public void testV2TokenGenerateSpecialOptout(String label, Operator operator, St "suite.operator.TestData#tokenPhoneArgs" }) public void testV2TokenRefresh(String label, Operator operator, String operatorName, String type, String identity) throws Exception { - IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity, false).getIdentity(); + IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity).getIdentity(); TokenRefreshResponse refreshed = operator.v2TokenRefresh(currentIdentity); DecryptionResponse decrypted = operator.v2TokenDecrypt(refreshed.getIdentity().getAdvertisingToken()); @@ -72,7 +72,7 @@ public void testV2TokenRefresh(String label, Operator operator, String operatorN "suite.operator.TestData#tokenPhoneArgsSpecialRefreshOptout" }) public void testV2SpecialRefreshOptout(String label, Operator operator, String operatorName, String type, String identity) { - IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity, false).getIdentity(); + IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity).getIdentity(); TokenRefreshResponse refreshed = operator.v2TokenRefresh(currentIdentity); assertTrue(refreshed.isOptout()); @@ -84,7 +84,7 @@ public void testV2SpecialRefreshOptout(String label, Operator operator, String o "suite.operator.TestData#tokenValidatePhoneArgs" }) public void testV2TokenValidate(String label, Operator operator, String operatorName, String type, String identity) throws Exception { - IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity, false).getIdentity(); + IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity).getIdentity(); String advertisingToken = currentIdentity.getAdvertisingToken(); JsonNode response = operator.v2TokenValidate(type, identity, advertisingToken); @@ -99,7 +99,7 @@ public void testV2TokenValidate(String label, Operator operator, String operator "suite.operator.TestData#identityMapBatchBadPhoneArgs" }) public void testV2IdentityMap(String label, Operator operator, String operatorName, String payload) throws Exception { - JsonNode response = operator.v2IdentityMap(payload, false); + JsonNode response = operator.v2IdentityMap(payload); // TODO: Assert the value assertThat(response.at("/status").asText()).isEqualTo("success"); @@ -112,7 +112,7 @@ public void testV2IdentityMap(String label, Operator operator, String operatorNa }) public void testV2IdentityMapValidateArgs(String label, Operator operator, String operatorName, String type, String identity) throws Exception { String payload = "{\"" + type + "\": [\"" + identity + "\"], \"optout_check\":1}"; - JsonNode response = operator.v2IdentityMap(payload, false); + JsonNode response = operator.v2IdentityMap(payload); assertThat(response.get("body").get("mapped").get(0).get("advertising_id").asText()).isNotNull(); } diff --git a/src/test/java/suite/optout/OptoutTest.java b/src/test/java/suite/optout/OptoutTest.java index 004e5a6..2b2138c 100644 --- a/src/test/java/suite/optout/OptoutTest.java +++ b/src/test/java/suite/optout/OptoutTest.java @@ -45,7 +45,7 @@ public static void setupAll() { }) @Order(1) public void testV2LogoutWithV2TokenGenerate(String label, Operator operator, String operatorName, String type, String identity) throws Exception { - IdentityTokens generateResponse = operator.v2TokenGenerate(type, identity, false).getIdentity(); + IdentityTokens generateResponse = operator.v2TokenGenerate(type, identity).getIdentity(); Thread.sleep(OPTOUT_DELAY_MS); JsonNode logoutResponse = operator.v2TokenLogout(type, identity); assertThat(logoutResponse).isEqualTo(OBJECT_MAPPER.readTree("{\"body\":{\"optout\":\"OK\"},\"status\":\"success\"}")); @@ -59,27 +59,6 @@ public void testV2LogoutWithV2TokenGenerate(String label, Operator operator, Str ); } - @ParameterizedTest(name = "/v2/token/logout with /v2/token/generate - {0} - {2}") - @MethodSource({ - "suite.optout.TestData#optoutTokenEmailArgs", - "suite.optout.TestData#optoutTokenPhoneArgs" - }) - @Order(2) - public void testV2LogoutWithV2TokenGenerateOldParticipant(String label, Operator operator, String operatorName, String type, String identity) throws Exception { - IdentityTokens generateResponse = operator.v2TokenGenerate(type, identity, true).getIdentity(); - Thread.sleep(OPTOUT_DELAY_MS); - JsonNode logoutResponse = operator.v2TokenLogout(type, identity); - assertThat(logoutResponse).isEqualTo(OBJECT_MAPPER.readTree("{\"body\":{\"optout\":\"OK\"},\"status\":\"success\"}")); - addToken( - "old participant " + label, - operator, - "v2", - "v2", - generateResponse.getRefreshToken(), - OBJECT_MAPPER.readTree(generateResponse.getJsonString()).at("/refresh_response_key").asText() - ); - } - @ParameterizedTest(name = "/v2/token/logout with /v2/identity/map - DII {0} - toOptOut {5} - {2}") @MethodSource({ "suite.optout.TestData#identityMapEmailArgs", @@ -87,7 +66,7 @@ public void testV2LogoutWithV2TokenGenerateOldParticipant(String label, Operator }) @Order(3) public void testV2LogoutWithV2IdentityMap(String label, Operator operator, String operatorName, String type, String emailOrPhone, boolean toOptOut) throws Exception { - JsonNode identityMapResponseNode = operator.v2IdentityMap("{\""+ type + "\":[\"" + emailOrPhone + "\"]}", false); + JsonNode identityMapResponseNode = operator.v2IdentityMap("{\""+ type + "\":[\"" + emailOrPhone + "\"]}"); assertThat(identityMapResponseNode.at("/status").asText()).isEqualTo("success"); String rawUID = identityMapResponseNode.get("body").get("mapped").get(0).get(TestData.ADVERTISING_ID).asText(); long beforeOptOutTimestamp = Instant.now().toEpochMilli(); diff --git a/src/test/java/suite/validator/V2ApiValidatorTest.java b/src/test/java/suite/validator/V2ApiValidatorTest.java index 0fbc777..b57eb47 100644 --- a/src/test/java/suite/validator/V2ApiValidatorTest.java +++ b/src/test/java/suite/validator/V2ApiValidatorTest.java @@ -18,7 +18,7 @@ public class V2ApiValidatorTest extends ValidatorTestBase { }) public void testV2TokenGenerateViaMetrics(String label, Operator operator, String operatorName, Prometheus prometheus, String prometheusName, String type, String identity) throws Exception { assertThat(compareMetricValues(prometheus, Metric.MATCH_METRIC_NAME, "/v2/token/generate", HttpClient.HttpMethod.POST, () -> - operator.v2TokenGenerate(type, identity, false) + operator.v2TokenGenerate(type, identity) )).isTrue(); } @@ -29,7 +29,7 @@ public void testV2TokenGenerateViaMetrics(String label, Operator operator, Strin }) public void testV2TokenRefreshViaMetrics(String label, Operator operator, String operatorName, Prometheus prometheus, String prometheusName, String type, String identity) throws Exception { assertThat(compareMetricValues(prometheus, Metric.MATCH_METRIC_NAME, "/v2/token/refresh", HttpClient.HttpMethod.POST, () -> { - IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity, false).getIdentity(); + IdentityTokens currentIdentity = operator.v2TokenGenerate(type, identity).getIdentity(); operator.v2TokenRefresh(currentIdentity); })).isTrue(); } @@ -43,7 +43,7 @@ public void testV2TokenRefreshViaMetrics(String label, Operator operator, String }) public void testV2IdentityMapViaMetrics(String label, Operator operator, String operatorName, Prometheus prometheus, String prometheusName, String payload) throws Exception { assertThat(compareMetricValues(prometheus, Metric.MATCH_METRIC_NAME, "/v2/identity/map", HttpClient.HttpMethod.POST, () -> - operator.v2IdentityMap(payload, false) + operator.v2IdentityMap(payload) )).isTrue(); } From 48498a4751007df3e7c429ca14fc4f4be6e23aed Mon Sep 17 00:00:00 2001 From: Katherine Chen Date: Thu, 10 Apr 2025 13:12:27 +1000 Subject: [PATCH 2/2] Remove CLIENT_API_KEY_BEFORE_OPTOUT_CUTOFF and CLIENT_API_SECRET_BEFORE_OPTOUT_CUTOFF --- Dockerfile | 2 -- src/test/java/common/Const.java | 4 ---- 2 files changed, 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7f0e319..e38365c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,8 +26,6 @@ ENV UID2_CORE_E2E_OPTOUT_URL "" ENV UID2_OPERATOR_E2E_CLIENT_SITE_ID "" ENV UID2_OPERATOR_E2E_CLIENT_API_KEY "" ENV UID2_OPERATOR_E2E_CLIENT_API_SECRET "" -ENV UID2_OPERATOR_E2E_CLIENT_API_KEY_BEFORE_OPTOUT_CUTOFF "" -ENV UID2_OPERATOR_E2E_CLIENT_API_SECRET_BEFORE_OPTOUT_CUTOFF "" ENV UID2_OPERATOR_E2E_CLIENT_API_KEY_SHARING_RECIPIENT "" ENV UID2_OPERATOR_E2E_CLIENT_API_SECRET_SHARING_RECIPIENT "" ENV UID2_OPERATOR_E2E_CLIENT_API_KEY_NON_SHARING_RECIPIENT "" diff --git a/src/test/java/common/Const.java b/src/test/java/common/Const.java index 11020ea..df0c341 100644 --- a/src/test/java/common/Const.java +++ b/src/test/java/common/Const.java @@ -23,10 +23,6 @@ public static final class Operator { public static final String CLIENT_API_KEY = "UID2_OPERATOR_E2E_CLIENT_API_KEY"; public static final String CLIENT_API_SECRET = "UID2_OPERATOR_E2E_CLIENT_API_SECRET"; - // Optout cutoff - public static final String CLIENT_API_KEY_BEFORE_OPTOUT_CUTOFF = "UID2_OPERATOR_E2E_CLIENT_API_KEY_BEFORE_OPTOUT_CUTOFF"; - public static final String CLIENT_API_SECRET_BEFORE_OPTOUT_CUTOFF = "UID2_OPERATOR_E2E_CLIENT_API_SECRET_BEFORE_OPTOUT_CUTOFF"; - // Local only - Sharing public static final String CLIENT_API_KEY_SHARING_RECIPIENT = "UID2_OPERATOR_E2E_CLIENT_API_KEY_SHARING_RECIPIENT"; public static final String CLIENT_API_SECRET_SHARING_RECIPIENT = "UID2_OPERATOR_E2E_CLIENT_API_SECRET_SHARING_RECIPIENT";