50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
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)
|
||
|
|
}
|
||
|
|
}
|