mirror of
https://github.com/qdm12/gluetun.git
synced 2026-07-23 02:46:31 +02:00
d9cc7dcffb
- new directory structure containing manifest.json and one json file per provider, by default. - the manifest.json file can specify a filepath for each vpn provider - each vpn provider json data file can contain the `"preferred": true` field to enforce it is used even if outdated, unless there is a version mismatch - `STORAGE_SERVERS_DIRECTORY_PATH` replaces `STORAGE_FILEPATH` (which is now a migration source only). It sets the directory where server manifest and per-provider JSON files are stored (default: `/gluetun/servers/`). - First-run migration: On startup, gluetun checks for the old /gluetun/servers.json file; if found and no new manifest exists, it automatically migrates all data to /gluetun/servers/ directory structure - Silent fallback: If legacy file isn't found, uses the new directory path normally - Legacy cleanup: After successful migration, attempts to remove the old fat JSON file (logs warning only if removal fails, e.g., read-only bind mounts)
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package api
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_ParseProvider(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := map[string]struct {
|
|
s string
|
|
provider Provider
|
|
errMessage string
|
|
}{
|
|
"empty": {
|
|
errMessage: `API name is not valid: "" can only be ` +
|
|
`"cloudflare", "ifconfigco", "ip2location", "ipinfo" or a custom echoip# url`,
|
|
},
|
|
"invalid": {
|
|
s: "xyz",
|
|
errMessage: `API name is not valid: "xyz" can only be ` +
|
|
`"cloudflare", "ifconfigco", "ip2location", "ipinfo" or a custom echoip# url`,
|
|
},
|
|
"ipinfo": {
|
|
s: "ipinfo",
|
|
provider: IPInfo,
|
|
},
|
|
"IpInfo": {
|
|
s: "IpInfo",
|
|
provider: IPInfo,
|
|
},
|
|
"echoip_url_empty": {
|
|
s: "echoip#",
|
|
errMessage: `echoip# custom URL is not valid: "" ` +
|
|
`does not match regular expression: ^http(s|):\/\/.+$`,
|
|
},
|
|
"echoip_url_invalid": {
|
|
s: "echoip#postgres://localhost:3451",
|
|
errMessage: `echoip# custom URL is not valid: "postgres://localhost:3451" ` +
|
|
`does not match regular expression: ^http(s|):\/\/.+$`,
|
|
},
|
|
"echoip_url_valid": {
|
|
s: "echoip#http://localhost:3451",
|
|
provider: Provider("echoip#http://localhost:3451"),
|
|
},
|
|
}
|
|
|
|
for name, testCase := range testCases {
|
|
t.Run(name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
provider, err := ParseProvider(testCase.s)
|
|
|
|
assert.Equal(t, testCase.provider, provider)
|
|
if testCase.errMessage != "" {
|
|
assert.EqualError(t, err, testCase.errMessage)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|