package ipvanish import ( "errors" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func Test_parseFilename(t *testing.T) { t.Parallel() testCases := map[string]struct { fileName string hostname string country string city string err error }{ "unknown country code": { fileName: "ipvanish-unknown-host.ovpn", hostname: "host.ipvanish.com", err: errors.New("country code is unknown: unknown"), }, "country code only": { fileName: "ipvanish-ca-host.ovpn", hostname: "host.ipvanish.com", country: "Canada", }, "country code and city": { fileName: "ipvanish-ca-sao-paulo-host.ovpn", hostname: "host.ipvanish.com", country: "Canada", city: "Sao Paulo", }, } for name, testCase := range testCases { testCase := testCase t.Run(name, func(t *testing.T) { t.Parallel() country, city, err := parseFilename(testCase.fileName, testCase.hostname) if testCase.err != nil { require.Error(t, err) assert.Equal(t, testCase.err.Error(), err.Error()) } else { assert.NoError(t, err) } assert.Equal(t, testCase.country, country) assert.Equal(t, testCase.city, city) }) } }