package qrlogin import ( "testing" "time" "github.com/stretchr/testify/require" ) func TestParseTokenURL(t *testing.T) { tests := []struct { name string u string want Token wantErr bool }{ { "Valid", "tg://login?token=AQL0cY5hVg_D1OqESdYnJVg5845qbd8FiOLpUUeyvcb28g==", Token{ token: []uint8{ 0x1, 0x2, 0xf4, 0x71, 0x8e, 0x61, 0x56, 0xf, 0xc3, 0xd4, 0xea, 0x84, 0x49, 0xd6, 0x27, 0x25, 0x58, 0x39, 0xf3, 0x8e, 0x6a, 0x6d, 0xdf, 0x5, 0x88, 0xe2, 0xe9, 0x51, 0x47, 0xb2, 0xbd, 0xc6, 0xf6, 0xf2, }, expires: time.Unix(0, 0), }, false, }, {"InvalidSchema", "vk://login", Token{}, true}, {"InvalidPath", "tg://aboba", Token{}, true}, {"NoToken", "tg://login", Token{}, true}, {"InvalidBase64", "tg://login?token=A", Token{}, true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { a := require.New(t) got, err := ParseTokenURL(tt.u) if tt.wantErr { a.Error(err) } else { a.Equal(tt.want, got) a.NoError(err) a.Equal(tt.want.URL(), tt.u) } }) } }