2021-08-27 19:10:03 +00:00
|
|
|
package storage
|
2020-08-25 19:38:50 -04:00
|
|
|
|
|
|
|
|
import (
|
2020-10-20 02:45:28 +00:00
|
|
|
"crypto/sha256"
|
|
|
|
|
"encoding/hex"
|
2020-08-25 19:38:50 -04:00
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/qdm12/gluetun/internal/models"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2021-07-20 03:01:26 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
2020-08-25 19:38:50 -04:00
|
|
|
)
|
|
|
|
|
|
2021-08-27 19:10:03 +00:00
|
|
|
func Test_parseHardcodedServers(t *testing.T) {
|
2021-07-20 03:01:26 +00:00
|
|
|
t.Parallel()
|
|
|
|
|
|
2021-08-27 19:10:03 +00:00
|
|
|
servers, err := parseHardcodedServers()
|
2021-07-20 03:01:26 +00:00
|
|
|
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.NotEmpty(t, len(servers.Cyberghost.Servers))
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-20 02:45:28 +00:00
|
|
|
func digestServerModelVersion(t *testing.T, server interface{}, version uint16) string {
|
2021-05-30 03:09:22 +00:00
|
|
|
t.Helper()
|
2020-08-25 19:38:50 -04:00
|
|
|
bytes, err := json.Marshal(server)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
bytes = append(bytes, []byte(fmt.Sprintf("%d", version))...)
|
2020-10-20 02:45:28 +00:00
|
|
|
arr := sha256.Sum256(bytes)
|
|
|
|
|
hexString := hex.EncodeToString(arr[:])
|
|
|
|
|
if len(hexString) > 8 {
|
|
|
|
|
hexString = hexString[:8]
|
|
|
|
|
}
|
|
|
|
|
return hexString
|
2020-08-25 19:38:50 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Test_versions(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
2021-08-27 19:10:03 +00:00
|
|
|
|
|
|
|
|
allServers, err := parseHardcodedServers()
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
2020-10-20 02:45:28 +00:00
|
|
|
const format = "you forgot to update the version for %s"
|
|
|
|
|
testCases := map[string]struct {
|
|
|
|
|
model interface{}
|
|
|
|
|
version uint16
|
|
|
|
|
digest string
|
|
|
|
|
}{
|
|
|
|
|
"Cyberghost": {
|
|
|
|
|
model: models.CyberghostServer{},
|
|
|
|
|
version: allServers.Cyberghost.Version,
|
2021-09-23 13:54:24 +00:00
|
|
|
digest: "9ce64729",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
2021-03-05 23:12:19 -05:00
|
|
|
"Fastestvpn": {
|
|
|
|
|
model: models.FastestvpnServer{},
|
|
|
|
|
version: allServers.Fastestvpn.Version,
|
|
|
|
|
digest: "8825919b",
|
|
|
|
|
},
|
2021-03-05 22:45:54 -05:00
|
|
|
"HideMyAss": {
|
|
|
|
|
model: models.HideMyAssServer{},
|
|
|
|
|
version: allServers.HideMyAss.Version,
|
|
|
|
|
digest: "a93b4057",
|
|
|
|
|
},
|
2021-06-20 09:21:48 -07:00
|
|
|
"Ipvanish": {
|
|
|
|
|
model: models.IpvanishServer{},
|
|
|
|
|
version: allServers.Ipvanish.Version,
|
|
|
|
|
digest: "2eb80d28",
|
|
|
|
|
},
|
2021-05-31 00:11:16 +00:00
|
|
|
"Ivpn": {
|
|
|
|
|
model: models.IvpnServer{},
|
|
|
|
|
version: allServers.Ivpn.Version,
|
2021-08-23 16:01:01 +00:00
|
|
|
digest: "88074ceb",
|
2021-05-31 00:11:16 +00:00
|
|
|
},
|
2020-10-20 02:45:28 +00:00
|
|
|
"Mullvad": {
|
|
|
|
|
model: models.MullvadServer{},
|
|
|
|
|
version: allServers.Mullvad.Version,
|
2021-08-22 14:58:39 -07:00
|
|
|
digest: "ec56f19d",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
|
|
|
|
"Nordvpn": {
|
|
|
|
|
model: models.NordvpnServer{},
|
|
|
|
|
version: allServers.Nordvpn.Version,
|
2021-09-21 23:56:29 +00:00
|
|
|
digest: "a8043704",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
2020-11-08 20:56:49 -05:00
|
|
|
"Privado": {
|
|
|
|
|
model: models.PrivadoServer{},
|
|
|
|
|
version: allServers.Privado.Version,
|
2021-05-09 00:51:34 +00:00
|
|
|
digest: "dba6736c",
|
2020-11-08 20:56:49 -05:00
|
|
|
},
|
2021-02-26 12:58:58 +00:00
|
|
|
"Private Internet Access": {
|
|
|
|
|
model: models.PIAServer{},
|
|
|
|
|
version: allServers.Pia.Version,
|
2021-05-10 15:44:46 +00:00
|
|
|
digest: "91db9bc9",
|
2021-02-26 12:58:58 +00:00
|
|
|
},
|
2021-03-05 22:58:57 -05:00
|
|
|
"Privatevpn": {
|
|
|
|
|
model: models.PrivatevpnServer{},
|
|
|
|
|
version: allServers.Privatevpn.Version,
|
|
|
|
|
digest: "cba13d78",
|
|
|
|
|
},
|
2021-04-25 15:44:45 -04:00
|
|
|
"Protonvpn": {
|
|
|
|
|
model: models.ProtonvpnServer{},
|
|
|
|
|
version: allServers.Protonvpn.Version,
|
|
|
|
|
digest: "b964085b",
|
|
|
|
|
},
|
2020-10-20 02:45:28 +00:00
|
|
|
"Purevpn": {
|
|
|
|
|
model: models.PurevpnServer{},
|
|
|
|
|
version: allServers.Purevpn.Version,
|
2021-05-10 00:36:14 +00:00
|
|
|
digest: "23f2d422",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
|
|
|
|
"Surfshark": {
|
|
|
|
|
model: models.SurfsharkServer{},
|
|
|
|
|
version: allServers.Surfshark.Version,
|
2021-08-23 10:25:00 -07:00
|
|
|
digest: "3ccaa772",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
2021-02-17 20:36:30 -05:00
|
|
|
"Torguard": {
|
|
|
|
|
model: models.TorguardServer{},
|
|
|
|
|
version: allServers.Torguard.Version,
|
2021-05-10 01:48:52 +00:00
|
|
|
digest: "6eb9028e",
|
2021-02-17 20:36:30 -05:00
|
|
|
},
|
2021-06-20 09:18:03 -07:00
|
|
|
"VPN Unlimited": {
|
|
|
|
|
model: models.VPNUnlimitedServer{},
|
|
|
|
|
version: allServers.VPNUnlimited.Version,
|
|
|
|
|
digest: "5cb51319",
|
|
|
|
|
},
|
2020-10-20 02:45:28 +00:00
|
|
|
"Vyprvpn": {
|
|
|
|
|
model: models.VyprvpnServer{},
|
|
|
|
|
version: allServers.Vyprvpn.Version,
|
2021-05-10 02:12:13 +00:00
|
|
|
digest: "58de06d8",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
2021-09-23 07:58:13 -07:00
|
|
|
"Wevpn": {
|
|
|
|
|
model: models.WevpnServer{},
|
|
|
|
|
version: allServers.Wevpn.Version,
|
|
|
|
|
digest: "f4daa186",
|
|
|
|
|
},
|
2020-10-20 02:45:28 +00:00
|
|
|
"Windscribe": {
|
|
|
|
|
model: models.WindscribeServer{},
|
|
|
|
|
version: allServers.Windscribe.Version,
|
2021-08-22 14:58:39 -07:00
|
|
|
digest: "4bd0fc4f",
|
2020-10-20 02:45:28 +00:00
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
for name, testCase := range testCases {
|
|
|
|
|
name := name
|
|
|
|
|
testCase := testCase
|
|
|
|
|
t.Run(name, func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
digest := digestServerModelVersion(t, testCase.model, testCase.version)
|
|
|
|
|
failureMessage := fmt.Sprintf(format, name)
|
|
|
|
|
assert.Equal(t, testCase.digest, digest, failureMessage)
|
|
|
|
|
})
|
|
|
|
|
}
|
2020-08-25 19:38:50 -04:00
|
|
|
}
|