Testing Customer Model and Password Hashing Utilities ===================================================== Test 1: Email Validation Valid email 'test@example.com': PASS Valid email 'user.name@domain.co.id': PASS Valid email 'admin+tag@site.org': PASS Invalid email 'invalid': PASS Invalid email '@example.com': PASS Invalid email 'user@': PASS Invalid email 'user @example.com': PASS Invalid email '': PASS Test 2: Password Validation (minimum 8 characters) Valid password (length 11): PASS Valid password (length 8): PASS Valid password (length 11): PASS Valid password (length 8): PASS Invalid password (length 5): PASS Invalid password (length 7): PASS Invalid password (length 0): PASS Invalid password (length 3): PASS Test 3: Password Hashing Original password: MySecurePassword123 Hashed password: $2y$12$STfOiZd7lOFiNZL49km3C.N... Hash starts with $2y$ (bcrypt): PASS Hash length > 50: PASS Test 4: Password Verification Verify correct password: PASS Reject wrong password: PASS Test 5: Customer Model Database Operations Email exists check for new email: PASS Customer creation: PASS - ID: ec7b3081-18c1-43e4-8335-327152d28e47 - Email: test_1783110493@example.com - Full Name: Test User - Password is hashed: PASS Email exists check after creation: PASS Duplicate email rejection: PASS Find by email: PASS Find by ID: PASS Password verification: PASS Test 6: Invalid Input Rejection Reject invalid email: PASS Reject short password: PASS ===================================================== All tests completed!