| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package integration
- import (
- "encoding/json"
- "io"
- "net/http"
- "net/http/httptest"
- "strings"
- "testing"
- )
- func stubNordAPI(t *testing.T, handler http.HandlerFunc) {
- t.Helper()
- previous := nordAPIBase
- server := httptest.NewServer(handler)
- nordAPIBase = server.URL
- t.Cleanup(func() {
- nordAPIBase = previous
- server.Close()
- })
- }
- func TestNordCountriesOnlyRequestsNordLynxServerCountries(t *testing.T) {
- stubNordAPI(t, func(w http.ResponseWriter, req *http.Request) {
- if req.URL.Path != "/v1/servers/countries" {
- t.Errorf("country path = %q", req.URL.Path)
- }
- if got := req.URL.Query().Get("filters[servers_technologies][identifier]"); got != "wireguard_udp" {
- t.Errorf("NordLynx technology filter = %q", got)
- }
- w.Header().Set("Content-Type", "application/json")
- _, _ = io.WriteString(w, `[{"id":228,"name":"United States","code":"US"}]`)
- })
- got, err := (&NordService{}).GetCountries()
- if err != nil {
- t.Fatal(err)
- }
- if !strings.Contains(got, `"code":"US"`) {
- t.Fatalf("countries = %s", got)
- }
- }
- func TestNordServersPreserveLowLoadServers(t *testing.T) {
- stubNordAPI(t, func(w http.ResponseWriter, req *http.Request) {
- if req.URL.Path != "/v2/servers" {
- t.Errorf("server path = %q", req.URL.Path)
- }
- if got := req.URL.Query().Get("filters[country_id]"); got != "225" {
- t.Errorf("country filter = %q", got)
- }
- if got := req.URL.Query().Get("filters[servers_technologies][identifier]"); got != "wireguard_udp" {
- t.Errorf("NordLynx technology filter = %q", got)
- }
- w.Header().Set("Content-Type", "application/json")
- _, _ = io.WriteString(w, `{"servers":[{"id":1,"load":0},{"id":2,"load":4}]}`)
- })
- got, err := (&NordService{}).GetServers("225")
- if err != nil {
- t.Fatal(err)
- }
- var payload struct {
- Servers []struct {
- Load int `json:"load"`
- } `json:"servers"`
- }
- if err := json.Unmarshal([]byte(got), &payload); err != nil {
- t.Fatal(err)
- }
- if len(payload.Servers) != 2 || payload.Servers[0].Load != 0 || payload.Servers[1].Load != 4 {
- t.Fatalf("servers = %+v", payload.Servers)
- }
- }
|