package util import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestNormalizePhoneNumber(t *testing.T) { for _, raw := range []string{ "6281234561234", "+6281234561234", "081234561234", "81234561234", "0812-3456-1234", "+62 812 3456 1234", "(+62) 812.3456.1234", "+62081234561234", " 081234561234 ", } { got, err := NormalizePhoneNumber(raw) require.NoError(t, err, raw) assert.Equal(t, "6281234561234", got, raw) } shortest, err := NormalizePhoneNumber("0811234567") require.NoError(t, err) assert.Equal(t, "62811234567", shortest) longest, err := NormalizePhoneNumber("0812345678901") require.NoError(t, err) assert.Equal(t, "62812345678901", longest) _, err = NormalizePhoneNumber("08123456789012") assert.ErrorIs(t, err, ErrInvalidPhoneNumber, "too long") for _, raw := range []string{ "", "0", "021-1234567", // a landline, cannot get the WhatsApp OTP "+6521234567", // not Indonesian "+1 415 555 0100", // not Indonesian "62812", // too short "0812abc61234", "0812/3456/1234", } { _, err := NormalizePhoneNumber(raw) assert.ErrorIs(t, err, ErrInvalidPhoneNumber, raw) } }