Skip to content

Unhandled ValueError on quantity param in product_service - Team 177 #5

Description

@BhavyaManvar

Description

The reserve_stock() and release_stock() endpoints both call int() directly on user-supplied input without a try/except guard. If the quantity field in the JSON body is a non-integer-castable value (e.g., "abc", null, [], 3.5), Python raises an unhandled ValueError (or TypeError) that Flask converts to a generic 500 Internal Server Error. At that time we need to showcase them as to enter integer or 400 BAD request with the add of int() logic.

Current Behavior

POST /api/v1/products/<id>/reserve
Body: { "quantity": "abc" }

→ Python raises: ValueError: invalid literal for int() with base 10: 'abc'
→ Flask returns: 500 Internal Server Error (generic HTML or JSON error page)
The raw traceback is logged server-side, and the client receives no useful error message.

in short = if user enter "abc" it showcase 500 status.

Expected Behavior

The endpoint should validate the input gracefully and return a 400 Bad Request with a clear JSON error message such as:
{ "error": "quantity must be a positive integer" }

Location

app.py

Impact

• Callers receive an opaque 500 error instead of actionable 400 feedback.
• Every malformed quantity triggers a 500 logged as a server error, polluting error metrics and potentially triggering false alerts.
• The order_service calls /reserve and /release programmatically. If it ever passes a malformed value, it gets a 503/500 cascading failure instead of a clear rejection.

Suggested Solution

Wrap the int() cast in a try/except, matching the pattern already used in create_product():
add with int(). with some minor logics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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