diff --git a/src/test/java/com/kingsrook/qbits/printing/PrintingContractTest.java b/src/test/java/com/kingsrook/qbits/printing/PrintingContractTest.java index 482aee8..fcd5e0c 100644 --- a/src/test/java/com/kingsrook/qbits/printing/PrintingContractTest.java +++ b/src/test/java/com/kingsrook/qbits/printing/PrintingContractTest.java @@ -50,7 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; class PrintingContractTest { private static final String ADMIN = "contract-test-administrator-token"; - private static final Path FIXTURES = Path.of(System.getProperty("printing.protocol.fixtures", "../qqq-print-protocol/fixtures")); + private static final Path FIXTURES = Path.of(System.getProperty("printing.protocol.fixtures", "src/test/resources/protocol-fixtures")); /** Default hosts cannot consume enrollment codes through the legacy bearer transport. */ diff --git a/src/test/resources/protocol-fixtures/README.md b/src/test/resources/protocol-fixtures/README.md new file mode 100644 index 0000000..7f28bdc --- /dev/null +++ b/src/test/resources/protocol-fixtures/README.md @@ -0,0 +1,30 @@ + +# Protocol fixtures used by PrintingContractTest + +Unaltered copies of files from the `fixtures/` directory of the canonical `qqq-print-protocol` repository +at commit `42c0d249f81395f00408ec0f92638dcbbf5deb03` (the commit this source pins), so the contract tests run +without a sibling checkout. Only the files the test reads are copied: + +- `action-refresh-inventory.request.json` +- `action-revoke.request.json` +- `approval.request.json` +- `control-inventory-refreshed.receipt.json` +- `control-poll.request.json` +- `create-enrollment.request.json` +- `device-retry.request.json` +- `device-test.request.json` +- `enroll.request.json` +- `heartbeat.request.json` +- `printers.request.json` +- `received.event.json` +- `spooled.event.json` +- `submit.request.json` +- `submitting.event.json` +- `test-label.zpl` + +To check these against another protocol revision, run the tests with +`-Dprinting.protocol.fixtures=`. When the pinned commit changes, replace these +files from that commit's `fixtures/` directory. diff --git a/src/test/resources/protocol-fixtures/action-refresh-inventory.request.json b/src/test/resources/protocol-fixtures/action-refresh-inventory.request.json new file mode 100644 index 0000000..ddd9a26 --- /dev/null +++ b/src/test/resources/protocol-fixtures/action-refresh-inventory.request.json @@ -0,0 +1,5 @@ +{ + "requestId": "action-refresh-inventory-1", + "issuedAt": "2026-10-31T16:00:00Z", + "action": "REFRESH_INVENTORY" +} diff --git a/src/test/resources/protocol-fixtures/action-revoke.request.json b/src/test/resources/protocol-fixtures/action-revoke.request.json new file mode 100644 index 0000000..66ebe80 --- /dev/null +++ b/src/test/resources/protocol-fixtures/action-revoke.request.json @@ -0,0 +1,5 @@ +{ + "requestId": "action-revoke-1", + "issuedAt": "2026-10-31T16:00:00Z", + "action": "REVOKE" +} diff --git a/src/test/resources/protocol-fixtures/approval.request.json b/src/test/resources/protocol-fixtures/approval.request.json new file mode 100644 index 0000000..4e609c7 --- /dev/null +++ b/src/test/resources/protocol-fixtures/approval.request.json @@ -0,0 +1,3 @@ +{ + "enabled": true +} diff --git a/src/test/resources/protocol-fixtures/control-inventory-refreshed.receipt.json b/src/test/resources/protocol-fixtures/control-inventory-refreshed.receipt.json new file mode 100644 index 0000000..49905b2 --- /dev/null +++ b/src/test/resources/protocol-fixtures/control-inventory-refreshed.receipt.json @@ -0,0 +1,5 @@ +{ + "receiptId": "receipt-inventory-refreshed-1", + "outcome": "INVENTORY_REFRESHED", + "completedAt": "2026-10-31T16:00:05Z" +} diff --git a/src/test/resources/protocol-fixtures/control-poll.request.json b/src/test/resources/protocol-fixtures/control-poll.request.json new file mode 100644 index 0000000..cf22406 --- /dev/null +++ b/src/test/resources/protocol-fixtures/control-poll.request.json @@ -0,0 +1,9 @@ +{ + "controlVersion": 1, + "agentVersion": "0.2.0-rc.1", + "capabilities": [ + "REFRESH_INVENTORY", + "CANCEL_SPOOL" + ], + "lastAppliedRevision": 0 +} diff --git a/src/test/resources/protocol-fixtures/create-enrollment.request.json b/src/test/resources/protocol-fixtures/create-enrollment.request.json new file mode 100644 index 0000000..813d5f7 --- /dev/null +++ b/src/test/resources/protocol-fixtures/create-enrollment.request.json @@ -0,0 +1,4 @@ +{ + "facilityId": "test-facility", + "deviceName": "Packing station" +} diff --git a/src/test/resources/protocol-fixtures/device-retry.request.json b/src/test/resources/protocol-fixtures/device-retry.request.json new file mode 100644 index 0000000..74aa6bf --- /dev/null +++ b/src/test/resources/protocol-fixtures/device-retry.request.json @@ -0,0 +1 @@ +{"requestId":"operator-retry-1","confirmDuplicateRisk":true} diff --git a/src/test/resources/protocol-fixtures/device-test.request.json b/src/test/resources/protocol-fixtures/device-test.request.json new file mode 100644 index 0000000..6a79c4c --- /dev/null +++ b/src/test/resources/protocol-fixtures/device-test.request.json @@ -0,0 +1 @@ +{"printerId":"printer-zebra","format":"ZPL","requestId":"operator-test-1"} diff --git a/src/test/resources/protocol-fixtures/enroll.request.json b/src/test/resources/protocol-fixtures/enroll.request.json new file mode 100644 index 0000000..8cd692a --- /dev/null +++ b/src/test/resources/protocol-fixtures/enroll.request.json @@ -0,0 +1,5 @@ +{ + "enrollmentCode": "EXAMPLE-NOT-A-REAL-CODE", + "deviceName": "Packing station", + "agentVersion": "0.1.0" +} diff --git a/src/test/resources/protocol-fixtures/heartbeat.request.json b/src/test/resources/protocol-fixtures/heartbeat.request.json new file mode 100644 index 0000000..d9a3870 --- /dev/null +++ b/src/test/resources/protocol-fixtures/heartbeat.request.json @@ -0,0 +1,3 @@ +{ + "agentVersion": "0.1.0" +} diff --git a/src/test/resources/protocol-fixtures/printers.request.json b/src/test/resources/protocol-fixtures/printers.request.json new file mode 100644 index 0000000..0364595 --- /dev/null +++ b/src/test/resources/protocol-fixtures/printers.request.json @@ -0,0 +1,25 @@ +{ + "printers": [ + { + "printerId": "laser-example", + "name": "Local Laser", + "driverName": "Example Laser Driver", + "portName": "USB001", + "status": "READY", + "formats": [ + "PDF" + ] + }, + { + "printerId": "zebra-example", + "name": "Local Zebra", + "driverName": "Example Zebra Driver", + "portName": "USB002", + "status": "READY", + "formats": [ + "PDF", + "ZPL" + ] + } + ] +} diff --git a/src/test/resources/protocol-fixtures/received.event.json b/src/test/resources/protocol-fixtures/received.event.json new file mode 100644 index 0000000..e558a4a --- /dev/null +++ b/src/test/resources/protocol-fixtures/received.event.json @@ -0,0 +1,4 @@ +{ + "eventId": "event-received-example", + "status": "RECEIVED" +} diff --git a/src/test/resources/protocol-fixtures/spooled.event.json b/src/test/resources/protocol-fixtures/spooled.event.json new file mode 100644 index 0000000..f07228e --- /dev/null +++ b/src/test/resources/protocol-fixtures/spooled.event.json @@ -0,0 +1,6 @@ +{ + "eventId": "event-spooled-example", + "status": "SPOOLED", + "spoolerJobId": "42", + "message": "Accepted by the Windows spooler." +} diff --git a/src/test/resources/protocol-fixtures/submit.request.json b/src/test/resources/protocol-fixtures/submit.request.json new file mode 100644 index 0000000..8ce5386 --- /dev/null +++ b/src/test/resources/protocol-fixtures/submit.request.json @@ -0,0 +1,12 @@ +{ + "deviceId": "device-example", + "printerId": "zebra-example", + "title": "QQQ cloud print test", + "format": "ZPL", + "contentBase64": "XlhBCl5GTzQwLDQwXkEwTiwzNiwzNl5GRFFRUSBjbG91ZCBwcmludCB0ZXN0XkZTCl5GTzQwLDkwXkEwTiwyNCwyNF5GRFByb3RvY29sIHYxIC0gb25lIHRlc3QgbGFiZWxeRlMKXlhaCg==", + "idempotencyKey": "protocol-fixture-label-v1", + "options": { + "copies": 1, + "scale": "ACTUAL_SIZE" + } +} diff --git a/src/test/resources/protocol-fixtures/submitting.event.json b/src/test/resources/protocol-fixtures/submitting.event.json new file mode 100644 index 0000000..d4ee0de --- /dev/null +++ b/src/test/resources/protocol-fixtures/submitting.event.json @@ -0,0 +1,4 @@ +{ + "eventId": "event-submitting-example", + "status": "SUBMITTING" +} diff --git a/src/test/resources/protocol-fixtures/test-label.zpl b/src/test/resources/protocol-fixtures/test-label.zpl new file mode 100644 index 0000000..95d2cbf --- /dev/null +++ b/src/test/resources/protocol-fixtures/test-label.zpl @@ -0,0 +1,4 @@ +^XA +^FO40,40^A0N,36,36^FDQQQ cloud print test^FS +^FO40,90^A0N,24,24^FDProtocol v1 - one test label^FS +^XZ