Skip to content

[Bug]: Inconsistent value behaviour between generate_token and decode_token for DISABLE_PAYG and COUNTER_SYNC #25

@dmohns

Description

@dmohns

Preflight Checklist

Expected Behavior

Token value and Token Type have a 1:1 relation for DISABLE_PAYG and COUNTER_SYNC. As a user I would expect generate_token and decode_token to have the same interface in terms of how DISABLE_PAYG and COUNTER_SYNC are specified.

Actual Behavior

In generate_token only token_type must be specified. Providing a non-None value yields:

ValueError: A value is not allowed for this token type.

In decode_token both token_type and token_value are returned.

Steps to reproduce

# OpenPAYGO-python
from openpaygo import OpenPAYGOTokenEncoder, TokenType

encoder = OpenPAYGOTokenEncoder()


new_count, final_token = encoder.generate_token(
    secret_key="bc41ec9530f6dac86b1a29ab82edc5fb",
    count=4,
    value=998,
    token_type=TokenType.DISABLE_PAYG,
    starting_code=516959010,
    restricted_digit_set=False,
    extended_token=False,
)

print(f"{new_count=}")
print(f"{final_token=}")

What operating system(s) are you using?

macOS

Additional Information

Suggested solutions:

Change generate_token to allow a token value that matches the provided token type. If none is given, the token value is derived from token_type. If a token type is provided that does not match the token value throw an error explaining the problem.

Alternative solution:

Change decode_token to not return token values for DISABLE_PAYG and COUNTER_SYNC

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions