running: /usr/bin/python3 -m pytest -rs -q --deselect test_fr01_login.py::test_tc_1_11_legacy_password_column_never_used --deselect test_fr04_new_bill.py::test_tc_4_7_rollback_after_bill_insert (in /tmp/pl11/App/acceptance/.work/aspnet)
...........s......................................................F..... [ 47%]
...........F............................................................ [ 94%]
.........                                                                [100%]
=================================== FAILURES ===================================
_________________________ test_tc_5_8_cancel_refusals __________________________

api = <function api.<locals>.make at 0x7fc1a1dd45e0>

    def test_tc_5_8_cancel_refusals(api):
        supervisor = api("spv3")
        with_payment = supervisor.post("/api/bills/B2952/cancel")
        assert with_payment.status_code == 409 and "has payments" in with_payment.get_json()["error"]["message"]
        owner = api("owner")
        assert owner.post("/api/bills/B2938/cancel").status_code == 409
>       assert api("kasir5").post("/api/bills/B2944/cancel").status_code == 403
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

test_fr05_workflow.py:101: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
conftest.py:464: in post
    return self._send("POST", url, body if body is not None else {}, token)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conftest.py:461: in _send
    return self.client.open(url, method=method, json=body, headers=headers)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conftest.py:296: in open
    response = self._send(method.upper(), url, body, send_headers)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conftest.py:320: in _send
    conn.request(method, url, body=body, headers=headers)
/usr/lib/python3.11/http/client.py:1323: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.11/http/client.py:1369: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.11/http/client.py:1318: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.11/http/client.py:1078: in _send_output
    self.send(msg)
/usr/lib/python3.11/http/client.py:1016: in send
    self.connect()
/usr/lib/python3.11/http/client.py:982: in connect
    self.sock = self._create_connection(
/usr/lib/python3.11/socket.py:863: in create_connection
    raise exceptions[0]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

address = ('127.0.0.1', 6120), timeout = 120, source_address = None
all_errors = False

    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
                          source_address=None, *, all_errors=False):
        """Connect to *address* and return the socket object.
    
        Convenience function.  Connect to *address* (a 2-tuple ``(host,
        port)``) and return the socket object.  Passing the optional
        *timeout* parameter will set the timeout on the socket instance
        before attempting to connect.  If no *timeout* is supplied, the
        global default timeout setting returned by :func:`getdefaulttimeout`
        is used.  If *source_address* is set it must be a tuple of (host, port)
        for the socket to bind as a source address before making the connection.
        A host of '' or port 0 tells the OS to use the default. When a connection
        cannot be created, raises the last error if *all_errors* is False,
        and an ExceptionGroup of all errors if *all_errors* is True.
        """
    
        host, port = address
        exceptions = []
        for res in getaddrinfo(host, port, 0, SOCK_STREAM):
            af, socktype, proto, canonname, sa = res
            sock = None
            try:
                sock = socket(af, socktype, proto)
                if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
                    sock.settimeout(timeout)
                if source_address:
                    sock.bind(source_address)
>               sock.connect(sa)
E               ConnectionRefusedError: [Errno 111] Connection refused

/usr/lib/python3.11/socket.py:848: ConnectionRefusedError
--------------------------- Captured stdout teardown ---------------------------
---- server log (last 4000 characters) ----
info: ProfitinaLaundry[0]
      Profitina Laundry: store csv, clock fixed at 2026-09-30 21:00:00
info: Laundry[0]
      Data store: CSV files in /tmp/pytest-of-root/pytest-40/test_tc_5_8_cancel_refusals0/csv
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://127.0.0.1:6120
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /tmp/pl11/App/aspnet
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...

______________________ test_tc_6_8_bad_amounts[1000.5_0] _______________________

api = <function api.<locals>.make at 0x7fc1a1e4be20>, amount = 1000.5

    @pytest.mark.parametrize("amount", [0, -5, 1000.5, "1000.5", "abc"])
    def test_tc_6_8_bad_amounts(api, amount):
>       response = api("kasir5").post("/api/bills/B2938/payments", {"method": "cash", "amount": amount})
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

test_fr06_payments.py:73: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
conftest.py:464: in post
    return self._send("POST", url, body if body is not None else {}, token)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conftest.py:461: in _send
    return self.client.open(url, method=method, json=body, headers=headers)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conftest.py:296: in open
    response = self._send(method.upper(), url, body, send_headers)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conftest.py:320: in _send
    conn.request(method, url, body=body, headers=headers)
/usr/lib/python3.11/http/client.py:1323: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.11/http/client.py:1369: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.11/http/client.py:1318: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.11/http/client.py:1078: in _send_output
    self.send(msg)
/usr/lib/python3.11/http/client.py:1016: in send
    self.connect()
/usr/lib/python3.11/http/client.py:982: in connect
    self.sock = self._create_connection(
/usr/lib/python3.11/socket.py:863: in create_connection
    raise exceptions[0]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

address = ('127.0.0.1', 6120), timeout = 120, source_address = None
all_errors = False

    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
                          source_address=None, *, all_errors=False):
        """Connect to *address* and return the socket object.
    
        Convenience function.  Connect to *address* (a 2-tuple ``(host,
        port)``) and return the socket object.  Passing the optional
        *timeout* parameter will set the timeout on the socket instance
        before attempting to connect.  If no *timeout* is supplied, the
        global default timeout setting returned by :func:`getdefaulttimeout`
        is used.  If *source_address* is set it must be a tuple of (host, port)
        for the socket to bind as a source address before making the connection.
        A host of '' or port 0 tells the OS to use the default. When a connection
        cannot be created, raises the last error if *all_errors* is False,
        and an ExceptionGroup of all errors if *all_errors* is True.
        """
    
        host, port = address
        exceptions = []
        for res in getaddrinfo(host, port, 0, SOCK_STREAM):
            af, socktype, proto, canonname, sa = res
            sock = None
            try:
                sock = socket(af, socktype, proto)
                if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
                    sock.settimeout(timeout)
                if source_address:
                    sock.bind(source_address)
>               sock.connect(sa)
E               ConnectionRefusedError: [Errno 111] Connection refused

/usr/lib/python3.11/socket.py:848: ConnectionRefusedError
--------------------------- Captured stdout teardown ---------------------------
---- server log (last 4000 characters) ----
info: ProfitinaLaundry[0]
      Profitina Laundry: store csv, clock fixed at 2026-09-30 21:00:00
info: Laundry[0]
      Data store: CSV files in /tmp/pytest-of-root/pytest-40/test_tc_6_8_bad_amounts_1000_50/csv
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://127.0.0.1:6120
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /tmp/pl11/App/aspnet
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...

=========================== short test summary info ============================
SKIPPED [1] conftest.py:272: HTTPS is not available in the black-box harness
2 failed, 150 passed, 1 skipped, 2 deselected in 226.46s (0:03:46)
