From 17d7103bf1b832d5d8f4a4b8b4731e911cd09968 Mon Sep 17 00:00:00 2001 From: Chad Huff Date: Tue, 5 Aug 2025 06:54:19 -0600 Subject: [PATCH] usnat backwards compatibility for compressed padding --- .../src/encoder/segment/UsNatCoreSegment.ts | 10 ++++++++- .../cmpapi/test/encoder/section/UsNat.test.ts | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/modules/cmpapi/src/encoder/segment/UsNatCoreSegment.ts b/modules/cmpapi/src/encoder/segment/UsNatCoreSegment.ts index 9723510..461054d 100644 --- a/modules/cmpapi/src/encoder/segment/UsNatCoreSegment.ts +++ b/modules/cmpapi/src/encoder/segment/UsNatCoreSegment.ts @@ -138,7 +138,15 @@ export class UsNatCoreSegment extends AbstractLazilyEncodableSegment { expect(false, usNat.getFieldValue(UsNatField.GPC_SEGMENT_INCLUDED)); }); + it("should decode BVQqAAAACg", (): void => { + let usNat = new UsNat("BVQqAAAACg"); + + expect(1, usNat.getFieldValue(UsNatField.SHARING_NOTICE)); + expect(1, usNat.getFieldValue(UsNatField.SALE_OPT_OUT_NOTICE)); + expect(1, usNat.getFieldValue(UsNatField.SHARING_OPT_OUT_NOTICE)); + expect(1, usNat.getFieldValue(UsNatField.TARGETED_ADVERTISING_OPT_OUT_NOTICE)); + expect(0, usNat.getFieldValue(UsNatField.SENSITIVE_DATA_PROCESSING_OPT_OUT_NOTICE)); + expect(0, usNat.getFieldValue(UsNatField.SENSITIVE_DATA_LIMIT_USE_NOTICE)); + expect(0, usNat.getFieldValue(UsNatField.SALE_OPT_OUT)); + expect(2, usNat.getFieldValue(UsNatField.SHARING_OPT_OUT)); + expect(2, usNat.getFieldValue(UsNatField.TARGETED_ADVERTISING_OPT_OUT)); + expect([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], usNat.getFieldValue(UsNatField.SENSITIVE_DATA_PROCESSING)); + expect([0, 0, 0], usNat.getFieldValue(UsNatField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS)); + expect(2, usNat.getFieldValue(UsNatField.PERSONAL_DATA_CONSENTS)); + expect(2, usNat.getFieldValue(UsNatField.MSPA_COVERED_TRANSACTION)); + expect(0, usNat.getFieldValue(UsNatField.MSPA_OPT_OUT_OPTION_MODE)); + expect(0, usNat.getFieldValue(UsNatField.MSPA_SERVICE_PROVIDER_MODE)); + expect(false, usNat.getFieldValue(UsNatField.GPC_SEGMENT_INCLUDED)); + }); + it("should throw Error on garbage", (): void => { expect(function () { new UsNat("z").getFieldValue(UsNatField.TARGETED_ADVERTISING_OPT_OUT_NOTICE);