00:00 +0: loading C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart 00:00 +0: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination 2/3 finalizes before everyone votes Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~1: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency 2/3 finalizes and records only one bid Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~2: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination 3/4 finalizes before everyone votes Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~3: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency 3/4 finalizes and records only one bid Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~4: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination 3/5 finalizes before everyone votes Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~5: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency 3/5 finalizes and records only one bid Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~6: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination duplicate member vote replaces its prior choice Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~7: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency duplicate member vote updates one ballot Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~8: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination 2-2-1 uses the existing tie-only next round Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~9: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency 2-2-1 closes without early winner, old cheaper-bid tie-break remains Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~10: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination simultaneous final votes preserve one winner Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~11: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency simultaneous final votes preserve one winner Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~12: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions destination excludes departed/inactive votes Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~13: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_database_test.dart: isolated MariaDB majority transactions agency excludes departed/inactive votes Skip: Run work/run_majority_database_tests.py with an isolated schema. 00:00 +0 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 1/3 early majority = false 00:00 +1 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 1/3 early majority = false 00:00 +2 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 2/3 early majority = true 00:00 +3 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 2/3 early majority = true 00:00 +4 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 2/4 early majority = false 00:00 +5 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 2/4 early majority = false 00:00 +6 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 3/4 early majority = true 00:00 +7 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 3/4 early majority = true 00:00 +8 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 3/5 early majority = true 00:00 +9 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 3/5 early majority = true 00:00 +10 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 3/6 early majority = false 00:00 +11 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 3/6 early majority = false 00:00 +12 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination 4/6 early majority = true 00:00 +13 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: agency 4/6 early majority = true 00:00 +14 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: thresholds use the whole electorate: 3, 4, 5, 6 00:00 +15 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: 2-2-1 has no majority; original destination tie round still applies 00:00 +16 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: 2-2-1 has no agency majority; all-voted close/finalize remains 00:00 +17 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: recorded agency winner is immutable and later votes are rejected 00:00 +18 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/absolute_majority_test.dart: destination majority ignores departed voters and duplicate rows 00:00 +19 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/admin_group_reset_contract_test.dart: group reset endpoint remains admin-only and development-gated 00:00 +20 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/admin_group_reset_contract_test.dart: group management routes are admin-authorized 00:00 +21 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/admin_group_reset_contract_test.dart: force reset is server-gated and requires a proven test group 00:00 +22 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/admin_group_reset_contract_test.dart: reset action is no longer rendered in user detail page 00:00 +23 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/admin_group_reset_contract_test.dart: reset lifecycle only removes membership and matched preference state 00:00 +24 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/admin_user_management_migration_test.dart: admin user management migration is additive and auditable 00:00 +25 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: registration creates a pending agency and keeps license private 00:00 +26 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: agency reviews require a server session and ignore a spoofed agency ID 00:00 +27 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: registration accepts a valid PNG license upload 00:00 +28 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: registration accepts a valid JPG license upload 00:00 +29 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: pending agency can login but cannot access marketplace or submit bid 00:00 +30 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: admin approval enables the same agency session and lead filters 00:01 +31 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: approved agency submits a PDF bid and User offer mapping preserves it 00:01 +32 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: another agency cannot update or cancel an owned bid 00:01 +33 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: agency can list and read only its own bid history 00:01 +34 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: missing token is 401 and suspended agency loses access immediately 00:01 +35 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: dissolved group bids remain history-only and cannot be active 00:01 +36 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: an open group keeps a submitted bid in the current list 00:01 +37 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: completed trip moves a still-submitted bid to history 00:01 +38 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: a genuinely cancelled bid stays labelled cancelled 00:01 +39 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: private upload validates magic bytes and strips traversal from metadata 00:01 +40 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_api_test.dart: admin can reject an agency and logout revokes the token 00:01 +41 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_admin_migration_test.dart: Agency/Admin migration is additive and contains required invariants 00:01 +42 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_lead_detail_connection_test.dart: lead detail awaits summary before closing connection (poll=true) 00:01 +43 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_lead_detail_connection_test.dart: lead detail awaits summary before closing connection (poll=false) 00:01 +44 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_profile_contract_test.dart: agency profile supports approved bids before finalized voting 00:01 +45 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_profile_contract_test.dart: agency rating summary is company-only and backed by completed paid trips 00:01 +46 ~14: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_api_database_test.dart: isolated real review API and SQL review endpoint rejects missing agency authentication Skip: Run work/verify_agency_reviews.py against a disposable review fixture DB. 00:01 +46 ~15: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_api_database_test.dart: isolated real review API and SQL paid completed stored reviews use agency rating and latest order Skip: Run work/verify_agency_reviews.py against a disposable review fixture DB. 00:01 +46 ~16: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_api_database_test.dart: isolated real review API and SQL empty agency gets six memory-only demo reviews; repeated reads do not duplicate Skip: Run work/verify_agency_reviews.py against a disposable review fixture DB. 00:01 +46 ~17: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_api_database_test.dart: isolated real review API and SQL caller agency ID cannot fetch another company and review payload is private Skip: Run work/verify_agency_reviews.py against a disposable review fixture DB. 00:02 +46 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: real reviews average and count use agency ratings 00:02 +47 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: latest three reviews are newest first with all records retained 00:02 +48 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: same-date reviews use numeric ID order 00:02 +49 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: empty real reviews return null average and zero count 00:02 +50 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: demo is prohibited in environment "production" even with flag 00:02 +51 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: demo is prohibited in environment "prod" even with flag 00:02 +52 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: demo is prohibited in environment "" even with flag 00:02 +53 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: demo is prohibited in environment "staging" even with flag 00:02 +54 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: demo disabled in development does not seed 00:02 +55 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: enabled empty agency seeds six mixed ratings and marks demo 00:02 +56 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: repeat seed is idempotent and isolated by agency 00:02 +57 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: stored real review suppresses seed even when not eligible yet 00:02 +58 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: a later real review takes precedence over earlier in-memory seed 00:02 +59 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/agency_review_service_test.dart: response anonymizes names and removes contact details from comment 00:02 +60 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_polls_migration_test.dart: destination poll migration is additive, scoped, and deduplicated 00:02 +61 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_agency_privacy_test.dart: Agency receives poll aggregates but not member-level poll choices 00:02 +62 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_catalog_policy_test.dart: DestinationPollCatalogPolicy normalizes display country names to existing catalog labels 00:02 +63 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_catalog_policy_test.dart: DestinationPollCatalogPolicy Japanese legacy package rows seed city and city-bound place polls 00:02 +64 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_catalog_policy_test.dart: DestinationPollCatalogPolicy recognizes China aliases and builds two stages from fixture rows 00:03 +65 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_china_migration_test.dart: China poll catalog migration is idempotent and not business data 00:03 +66 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_china_migration_test.dart: China poll catalog rollback is scoped only to its seed rows 00:03 +67 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_contract_test.dart: destination poll API is membership-scoped and supports safe replacement 00:03 +68 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_contract_test.dart: matching alternative acceptance keeps original destination history 00:03 +69 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_image_attribution_test.dart: all eight poll image files have a source and license attribution 00:03 +70 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: a new round uses the 24 hour server policy by default 00:03 +71 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: one of three remains open before the deadline 00:03 +72 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: all eligible members voting closes a city poll before deadline 00:03 +73 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: deadline closes with a strict majority, including at exact deadline 00:03 +74 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: deadline below strict majority waits and does not declare a winner 00:03 +75 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: half is not a strict majority but three of four is 00:03 +76 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: city tie opens no winner and lists only tied options for next round 00:03 +77 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: place poll uses the same quorum but finalizes as a ranked result 00:03 +78 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: expired zero-vote poll waits and zero eligible members do not close 00:03 +79 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: departed member votes are excluded from current round participation 00:03 +80 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: duplicate vote rows count each active user once per option 00:03 +81 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: API state changes are transactional and round finalization is idempotent 00:03 +82 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: poll lifecycle migration is additive and idempotent 00:03 +83 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_policy_test.dart: Agency receives aggregates through latest rounds, never voter rows 00:04 +84 ~18: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/destination_poll_vote_database_test.dart: vote persists through the real service path and commits its transaction Skip: Set TRAVELIN_POLL_TEST_DB_* to an isolated, empty poll test schema. 00:04 +84 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/development_account_policy_test.dart: realistic development accounts are allowlisted by server identity 00:04 +85 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/group_reset_policy_test.dart: safe automatic group can be reset in development 00:04 +86 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/group_reset_policy_test.dart: finalized voting, payment, documents, and journey block reset 00:04 +87 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/group_reset_policy_test.dart: preparing journey does not block reset 00:04 +88 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/journey_safety_migration_test.dart: journey safety migration is additive and lifecycle is monotonic 00:05 +89 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/matching_v2_migration_test.dart: matching V2 migration is additive and backfills legacy destinations 00:05 +90 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/matching_waiting_policy_test.dart: default waiting window is five minutes 00:05 +91 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/matching_waiting_policy_test.dart: migration is additive and idempotent by construction 00:05 +92 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/matching_waiting_policy_test.dart: matching API exposes continue-waiting without a client user id 00:05 +93 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/mysql_agency_bid_lifecycle_test.dart: MySQL bid mapping derives completed status from trip lifecycle 00:05 +94 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/notification_migration_test.dart: notification migration is additive and prevents duplicate events 00:06 +95 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: persisted payment verification state paid row with matching persisted SlipOK evidence is verified 00:06 +96 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: persisted payment verification state receiver value may be absent because provider verification is saved 00:06 +97 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: persisted payment verification state does not call a paid row verified when success evidence is incomplete 00:06 +98 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: payment readback and duplicate protection contracts paid status endpoint only reads the existing user/bid payment 00:06 +99 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: payment readback and duplicate protection contracts verify endpoint short-circuits a paid row before provider call 00:06 +100 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: payment readback and duplicate protection contracts same evidence hash remains globally rejected for a different payment 00:06 +101 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: payment readback and duplicate protection contracts same transaction reference remains globally rejected 00:06 +102 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/payment_verification_state_test.dart: payment readback and duplicate protection contracts existing payment row is not duplicated by status readback 00:06 +103 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/promptpay_qr_test.dart: PromptPay QR payload normalizes Thai mobile ID and binds the exact amount 00:06 +104 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/promptpay_qr_test.dart: PromptPay QR payload supports national ID and e-wallet PromptPay identifiers 00:06 +105 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/promptpay_qr_test.dart: PromptPay QR payload rejects unsupported identifiers and fractional satang precision 00:06 +106 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/promptpay_qr_test.dart: payment presentation configuration live config exposes a dynamic amount QR only with SlipOK configured 00:06 +107 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/promptpay_qr_test.dart: payment presentation configuration missing provider or mismatched receiver fails closed 00:06 +108 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/promptpay_qr_test.dart: payment presentation configuration demo UI requires explicit development mode and demo verifier 00:06 +109 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/runtime_configuration_test.dart: local defaults keep adb reverse and local Portal compatible 00:06 +110 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/runtime_configuration_test.dart: production binds externally using the university supplied port 00:06 +111 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/runtime_configuration_test.dart: existing TRAVELIN_PORT remains supported and PORT takes precedence 00:06 +112 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/runtime_configuration_test.dart: production cannot silently fall back to the development port 00:06 +113 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/runtime_configuration_test.dart: invalid and placeholder ports fail without exposing their value 00:07 +114 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_configuration_test.dart: example contains only empty local payment configuration variables 00:07 +115 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_configuration_test.dart: secrets load only inside backend child with delayed expansion disabled 00:07 +116 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_configuration_test.dart: API verification uses persisted payment amount and stale evidence guard 00:07 +117 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_configuration_test.dart: new payment uses the winning bid and existing stored amounts are preserved 00:07 +118 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_configuration_test.dart: payment test amount configuration no longer affects runtime 00:07 +119 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_configuration_test.dart: live payment mode cannot be overridden to Demo verifier 00:07 +120 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_smoke_file_test.dart: provider diagnostic extracts only numeric code from synthetic response 00:07 +121 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_smoke_file_test.dart: malformed provider diagnostic never leaks a parsing error 00:07 +122 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_smoke_file_test.dart: single image inside a folder resolves without network or copying 00:07 +123 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_smoke_file_test.dart: missing or ambiguous folder never selects a slip arbitrarily 00:07 +124 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: quota GET preserves branch as one segment and never targets slip endpoint (123) 00:07 +125 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: quota GET preserves branch as one segment and never targets slip endpoint (fixture-branch_abc) 00:07 +126 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: full URL in branch config is rejected before authenticated request 00:07 +127 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: quota rejection retains only safe HTTP status and numeric provider code 00:07 +128 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: branch accepts safe opaque IDs and rejects path/control characters 00:07 +129 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: simultaneous payment retries invoke verification once and release gate 00:07 +130 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: failed verification releases gate for safe retry 00:07 +131 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: valid multipart uses backend amount, log and private HTTPS header Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.322267Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:07 +132 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: successful provider response with wrong amount still fails locally Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.346920Z expectedAmount=16500.00 actualAmount=1.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:07 +133 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: two baht JPEG bytes reach multipart unchanged with log=true Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.356192Z expectedAmount=2.00 actualAmount=2.00 imageBytes=6 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:07 +134 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: provider rejection 1012 is safe and does not reuse reference Shell: [SlipOK] status=400 code=1012 at=2026-10-07T16:50:29.364482Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +135 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: provider rejection 1013 is safe and does not reuse reference Shell: [SlipOK] status=400 code=1013 at=2026-10-07T16:50:29.369668Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +136 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1014 at=2026-10-07T16:50:29.375246Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +137 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1005 at=2026-10-07T16:50:29.379878Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +138 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1006 at=2026-10-07T16:50:29.384082Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +139 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1007 at=2026-10-07T16:50:29.390144Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +140 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1008 at=2026-10-07T16:50:29.396340Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +141 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1011 at=2026-10-07T16:50:29.399589Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +142 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1001 at=2026-10-07T16:50:29.404640Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +143 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse Shell: [SlipOK] status=400 code=1002 at=2026-10-07T16:50:29.409208Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +144 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slip_verification_migration_test.dart: slip verification migration is additive and prevents reuse 00:07 +145 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: config/quota/bank failure 1003 is unavailable, not invalid slip Shell: [SlipOK] status=400 code=1003 at=2026-10-07T16:50:29.415615Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +146 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: config/quota/bank failure 1004 is unavailable, not invalid slip Shell: [SlipOK] status=400 code=1004 at=2026-10-07T16:50:29.421680Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +147 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: config/quota/bank failure 1009 is unavailable, not invalid slip Shell: [SlipOK] status=400 code=1009 at=2026-10-07T16:50:29.428870Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +148 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: config/quota/bank failure 1010 is unavailable, not invalid slip Shell: [SlipOK] status=400 code=1010 at=2026-10-07T16:50:29.448534Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +149 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: HTTP 429 is retryable infrastructure failure Shell: [SlipOK] status=429 code=1011 at=2026-10-07T16:50:29.455604Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +150 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: HTTP 503 is retryable infrastructure failure Shell: [SlipOK] status=503 code=1011 at=2026-10-07T16:50:29.460737Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=false dataSuccess=false receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=false receivingBankPresent=false 00:07 +151 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: network errors redact transport details 00:07 +152 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: timeout remains retryable 00:07 +153 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: missing configuration never sends request 00:07 +154 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: invalid and oversized files never reach provider 00:07 +155 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: invalid and oversized files never reach provider 00:07 +156 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: invalid and oversized files never reach provider 00:07 +157 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: invalid and oversized files never reach provider 00:08 +158 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: invalid and oversized files never reach provider 00:08 +159 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: invalid and oversized files never reach provider 00:08 +160 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: provider success accepts missing optional receiver display metadata Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.732514Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=false hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=false 00:08 +161 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) bank: branch verification is independent of display value Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.738126Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +162 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) PromptPay: branch verification is independent of display value Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.742405Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=false hasReceiverProxy=true hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +163 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) fully masked: branch verification is independent of display value Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.746502Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +164 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) successful log=true accepts missing account/proxy display values Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.751581Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=true hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +165 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) receiver object alone is audit metadata after provider success Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.756304Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=false hasReceiverProxy=false hasDisplayName=true hasReceiverName=true hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +166 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 400/code 1011 remains a provider rejection Shell: [SlipOK] status=400 code=1011 at=2026-10-07T16:50:29.760478Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +167 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 400/code 1012 remains a provider rejection Shell: [SlipOK] status=400 code=1012 at=2026-10-07T16:50:29.764551Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +168 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 400/code 1013 remains a provider rejection Shell: [SlipOK] status=400 code=1013 at=2026-10-07T16:50:29.768620Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +169 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 400/code 1014 remains a provider rejection Shell: [SlipOK] status=400 code=1014 at=2026-10-07T16:50:29.773388Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +170 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 200 with root.success=false is not provider proof Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.777515Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=false dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +171 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 200 with root.success=null is not provider proof Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.781587Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=false dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +172 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 200 with root.success=true is not provider proof Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.786761Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=false dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +173 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) data.success=null is not provider proof Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.790513Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=false receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +174 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) data.success=true is not provider proof Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.794590Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=false receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +175 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) blank transaction reference is rejected after provider success Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.798155Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=true receivingBankPresent=true 00:08 +176 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) 1012 overrides even HTTP 200 and populated success response Shell: [SlipOK] status=200 code=1012 at=2026-10-07T16:50:29.803809Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +177 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) 1014 overrides even success flags and populated receiver Shell: [SlipOK] status=400 code=1014 at=2026-10-07T16:50:29.807009Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +178 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) data.success false never proves receiver verification Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.810063Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=false receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +179 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) provider receiver proof does not bypass required amount Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.815692Z expectedAmount=16500.00 actualAmount=unknown imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=false receivingBankPresent=true 00:08 +180 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) provider receiver proof does not bypass required transRef Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.820374Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=true receivingBankPresent=true 00:08 +181 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) provider receiver proof does not bypass required transTimestamp Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.823040Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=true amountPresent=true receivingBankPresent=true 00:08 +182 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/slipok_verifier_test.dart: v1.13 sanitized receiver mapping (mock HTTP only) HTTP 200 with missing transRef cannot finalize verification Shell: [SlipOK] status=200 code=none at=2026-10-07T16:50:29.827156Z expectedAmount=16500.00 actualAmount=16500.00 imageBytes=8 log=true rootSuccess=true dataSuccess=true receiverObject=true hasReceiverAccount=true hasReceiverProxy=false hasDisplayName=false hasReceiverName=false hasTransRef=false amountPresent=true receivingBankPresent=true 00:08 +183 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/travel_documents_migration_test.dart: travel document migration is additive, private and idempotent 00:08 +184 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/travel_documents_migration_test.dart: travel document migration is additive, private and idempotent 00:08 +185 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/travel_documents_migration_test.dart: travel document migration is additive, private and idempotent 00:08 +186 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/travel_document_upload_test.dart: private document validator accepts PNG JPG and PDF signatures 00:08 +187 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/travel_document_upload_test.dart: private document validator strips traversal and rejects disguised files 00:08 +188 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/travel_document_upload_test.dart: private document validator rejects oversized uploads 00:08 +189 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/trip_hub_migration_test.dart: Trip Hub migration is additive, private and idempotent 00:09 +190 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_migration_test.dart: Voting lifecycle migration is additive and enforces one round per group 00:09 +191 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: three group members each have one vote 00:09 +192 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: a member can change a vote before the deadline 00:09 +193 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: a vote at or after the deadline is rejected 00:09 +194 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: a non-member vote is rejected 00:09 +195 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: one of three votes before the deadline keeps the round open 00:09 +196 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: two of three votes before the deadline keeps the round open 00:09 +197 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: all eligible members voting closes the round before the deadline 00:09 +198 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: an expired deadline closes even when one member voted 00:09 +199 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: zero votes at an expired deadline still closes for existing no-vote policy 00:09 +200 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: the candidate with the highest vote count wins 00:09 +201 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: ties use lower price, then earlier submission, then bid id 00:09 +202 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: finalize is idempotent and preserves the recorded winner 00:09 +203 ~19: C:/Users/Admin/Downloads/TourAppProject/travelin_app/test/server/voting_policy_test.dart: payment is allowed only for the finalized winning bid 00:09 +204 ~19: All tests passed!