diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 89b28bb..61c0f88 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -29,3 +29,26 @@ jobs: - name: Run Black uses: psf/black@stable + + pytest: + name: Run pytest + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Python + uses: actions/setup-python@v5 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Install openpaygo + run: pip install . + + - name: Install pytest + run: pip install pytest + + - name: Run pytest + run: pytest diff --git a/test/test_encoder.py b/test/test_encoder.py new file mode 100644 index 0000000..cdae296 --- /dev/null +++ b/test/test_encoder.py @@ -0,0 +1,39 @@ +import json + +import pytest + +from openpaygo import OpenPAYGOTokenEncoder, TokenType + +with open("test/test_tokens.jsonl") as f: + sample_data = [json.loads(line) for line in f] + + +@pytest.fixture +def encoder(): + return OpenPAYGOTokenEncoder() + + +@pytest.fixture +def token_type_lookup(): + return { + "ADD_TIME": TokenType.ADD_TIME, + "SET_TIME": TokenType.SET_TIME, + "DISABLE_PAYG": TokenType.DISABLE_PAYG, + "COUNTER_SYNC": TokenType.COUNTER_SYNC, + } + + +@pytest.mark.parametrize("data", sample_data) +def test_generate_token(encoder, token_type_lookup, data): + new_count, final_token = encoder.generate_token( + secret_key=data["key"], + count=data["count"], + value=data["value_raw"], + token_type=token_type_lookup[data["token_type"]], + starting_code=data["starting_code"], + restricted_digit_set=data["restricted_digit_set"], + extended_token=data["extended_token"], + ) + + assert new_count == data["new_count"] + assert final_token == data["token"] diff --git a/test/test_tokens.jsonl b/test/test_tokens.jsonl new file mode 100644 index 0000000..2bb28e9 --- /dev/null +++ b/test/test_tokens.jsonl @@ -0,0 +1,80 @@ +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": false, "new_count": 2, "token": "588224011"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": true, "new_count": 2, "token": "247264959011"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": false, "new_count": 2, "token": "314114432231134"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": true, "new_count": 2, "token": "14323213131442331314"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": false, "new_count": 2, "token": "639704012"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": true, "new_count": 2, "token": "088026959012"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": false, "new_count": 2, "token": "323131212344141"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": true, "new_count": 2, "token": "12212443421141413321"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": false, "new_count": 2, "token": "177073015"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": true, "new_count": 2, "token": "507849959015"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": false, "new_count": 2, "token": "133314243342424"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": true, "new_count": 2, "token": "24231443142423232324"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": false, "new_count": 2, "token": "944829005"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": true, "new_count": 2, "token": "202207960005"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": false, "new_count": 2, "token": "431221144132142"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": true, "new_count": 2, "token": "13441221313132344122"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": false, "new_count": 3, "token": "380589011"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": true, "new_count": 3, "token": "660362959011"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": false, "new_count": 3, "token": "223334422144214"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": true, "new_count": 3, "token": "32324111341412313314"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": false, "new_count": 3, "token": "618165012"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": true, "new_count": 3, "token": "250408959012"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": false, "new_count": 3, "token": "321423124141221"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": true, "new_count": 3, "token": "14332142313224411321"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": false, "new_count": 3, "token": "691966015"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": true, "new_count": 3, "token": "925720959015"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": false, "new_count": 3, "token": "332144332111444"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": true, "new_count": 3, "token": "42243132212142311324"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": false, "new_count": 3, "token": "586420005"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": true, "new_count": 3, "token": "765385960005"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": false, "new_count": 3, "token": "313442111441322"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": true, "new_count": 3, "token": "34131421314343332122"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": false, "extended_token": false, "new_count": 3, "token": "190942008"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": false, "extended_token": true, "new_count": 3, "token": "696672960008"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": true, "extended_token": false, "new_count": 3, "token": "134231231341431"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": true, "extended_token": true, "new_count": 3, "token": "33131421441234431131"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": false, "extended_token": false, "new_count": 3, "token": "160440009"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": false, "extended_token": true, "new_count": 3, "token": "673729960009"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": true, "extended_token": false, "new_count": 3, "token": "132321112434132"} +{"serial_number": "TEST220000001", "starting_code": 516959010, "key": "bc41ec9530f6dac86b1a29ab82edc5fb", "count": 1, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": true, "extended_token": true, "new_count": 3, "token": "32414242234422312132"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": false, "new_count": 12, "token": "579194256"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": true, "new_count": 12, "token": "190546435256"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": false, "new_count": 12, "token": "313312241423211"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": true, "new_count": 12, "token": "13412242241442413431"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": false, "new_count": 12, "token": "134447257"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": true, "new_count": 12, "token": "504100435257"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": false, "new_count": 12, "token": "131111431113232"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": true, "new_count": 12, "token": "24222243343314221432"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": false, "new_count": 12, "token": "589568260"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": true, "new_count": 12, "token": "406910435260"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": false, "new_count": 12, "token": "314132112321121"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": true, "new_count": 12, "token": "22433442411124443441"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": false, "new_count": 12, "token": "379163250"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": true, "new_count": 12, "token": "750811436250"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": false, "new_count": 12, "token": "223323232132413"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "ADD_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": true, "new_count": 12, "token": "33434144423222214233"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": false, "new_count": 11, "token": "241554256"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": false, "extended_token": true, "new_count": 11, "token": "507297435256"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": false, "new_count": 11, "token": "143232242142211"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 1, "restricted_digit_set": true, "extended_token": true, "new_count": 11, "token": "24231242213131432431"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": false, "new_count": 11, "token": "628716257"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": false, "extended_token": true, "new_count": 11, "token": "358184435257"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": false, "new_count": 11, "token": "322243224134312"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 2, "restricted_digit_set": true, "extended_token": true, "new_count": 11, "token": "22142322242134431432"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": false, "new_count": 11, "token": "519034260"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": false, "extended_token": true, "new_count": 11, "token": "683979435260"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": false, "new_count": 11, "token": "243434442223221"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 5, "restricted_digit_set": true, "extended_token": true, "new_count": 11, "token": "32442111223243414441"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": false, "new_count": 11, "token": "664193250"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": false, "extended_token": true, "new_count": 11, "token": "131362436250"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": false, "new_count": 11, "token": "324322341314313"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "SET_TIME", "value_raw": 995, "restricted_digit_set": true, "extended_token": true, "new_count": 11, "token": "12433222414434213233"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": false, "extended_token": false, "new_count": 11, "token": "418174253"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": false, "extended_token": true, "new_count": 11, "token": "523765436253"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": true, "extended_token": false, "new_count": 11, "token": "231434142221342"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "DISABLE_PAYG", "value_raw": null, "restricted_digit_set": true, "extended_token": true, "new_count": 11, "token": "24324413423321442242"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": false, "extended_token": false, "new_count": 11, "token": "648453254"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": false, "extended_token": true, "new_count": 11, "token": "059963436254"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": true, "extended_token": false, "new_count": 11, "token": "323332332413123"} +{"serial_number": "TEST240000002", "starting_code": 432435255, "key": "dac86b1a29ab82edc5fbbc41ec9530f6", "count": 10, "token_type": "COUNTER_SYNC", "value_raw": null, "restricted_digit_set": true, "extended_token": true, "new_count": 11, "token": "11424423123223414243"} diff --git a/utils/generate_test_tokens.py b/utils/generate_test_tokens.py new file mode 100755 index 0000000..cf31ae3 --- /dev/null +++ b/utils/generate_test_tokens.py @@ -0,0 +1,118 @@ +import json + +from openpaygo import OpenPAYGOTokenEncoder, TokenType + +encoder = OpenPAYGOTokenEncoder() + +token_types = [ + "ADD_TIME", + "SET_TIME", + "DISABLE_PAYG", + "COUNTER_SYNC", +] + +token_add_set_time_values = [ + 1, + 2, + 5, + 995, # highest allowed value without special meaning +] +token_type_lookup = { + "ADD_TIME": TokenType.ADD_TIME, + "SET_TIME": TokenType.SET_TIME, + "DISABLE_PAYG": TokenType.DISABLE_PAYG, + "COUNTER_SYNC": TokenType.COUNTER_SYNC, +} + +restricted_digit_set_values = [False, True] + +extended_token_values = [False, True] + +all_cases = [ + { + "token_type": token_type, + "token_value": token_value, + "restricted_digit_set": restricted_digit_set, + "extended_token": extended_token, + } + for token_type in token_types + for token_value in ( + token_add_set_time_values if token_type in ["ADD_TIME", "SET_TIME"] else [None] + ) + for restricted_digit_set in restricted_digit_set_values + for extended_token in extended_token_values +] + + +def array_of_dicts_to_jsonl(array, filename): + with open(filename, "w") as outfile: + for item in array: + json.dump(item, outfile) + outfile.write("\n") + + +if __name__ == "__main__": + device_data1 = { + "serial_number": "TEST220000001", + "starting_code": 516959010, + "key": "bc41ec9530f6dac86b1a29ab82edc5fb", + "count": 1, + } + device_data2 = { + "serial_number": "TEST240000002", + "starting_code": 432435255, + "key": "dac86b1a29ab82edc5fbbc41ec9530f6", + "count": 10, + } + + test_cases = [] + + # DEVICE 1 + for t in all_cases: + new_count, final_token = encoder.generate_token( + secret_key=device_data1["key"], + count=device_data1["count"], + value=t["token_value"], + token_type=token_type_lookup[t["token_type"]], + starting_code=device_data1["starting_code"], + restricted_digit_set=t["restricted_digit_set"], + extended_token=t["extended_token"], + ) + + result = { + **device_data1, + **{ + "token_type": t["token_type"], + "value_raw": t["token_value"], + "restricted_digit_set": t["restricted_digit_set"], + "extended_token": t["extended_token"], + }, + **{"new_count": new_count, "token": final_token.replace(" ", "")}, + } + test_cases.append(result) + + # DEVICE 2 + for t in all_cases: + new_count, final_token = encoder.generate_token( + secret_key=device_data2["key"], + count=device_data2["count"], + value=t["token_value"], + token_type=token_type_lookup[t["token_type"]], + starting_code=device_data2["starting_code"], + restricted_digit_set=t["restricted_digit_set"], + extended_token=t["extended_token"], + ) + + result = { + **device_data2, + **{ + "token_type": t["token_type"], + "value_raw": t["token_value"], + "restricted_digit_set": t["restricted_digit_set"], + "extended_token": t["extended_token"], + }, + **{"new_count": new_count, "token": final_token.replace(" ", "")}, + } + test_cases.append(result) + + array_of_dicts_to_jsonl(test_cases, "test/test_tokens.jsonl")