| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package ike
- import (
- "context"
- "fmt"
- "net/http"
- "net/http/httptest"
- "testing"
- )
- func TestResolveEPDGWithECS(t *testing.T) {
- server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- if got := r.URL.Query().Get("name"); got != "epdg.epc.mnc002.mcc262.pub.3gppnetwork.org" {
- t.Errorf("name = %q", got)
- }
- if got := r.URL.Query().Get("edns_client_subnet"); got != "109.192.0.0/24" {
- t.Errorf("edns_client_subnet = %q", got)
- }
- w.Header().Set("Content-Type", "application/dns-json")
- _, _ = fmt.Fprint(w, `{
- "Status": 0,
- "Question": [{"name":"epdg.example.","type":1}],
- "Answer": [
- {"name":"epdg.example.","type":5,"TTL":60,"data":"gateway.example."},
- {"name":"gateway.example.","type":1,"TTL":60,"data":"139.7.117.168"},
- {"name":"gateway.example.","type":1,"TTL":60,"data":"139.7.117.169"},
- {"name":"gateway.example.","type":1,"TTL":60,"data":"139.7.117.168"}
- ]
- }`)
- }))
- defer server.Close()
- addresses, err := resolveEPDGWithECS(
- context.Background(),
- server.Client(),
- server.URL,
- "epdg.epc.mnc002.mcc262.pub.3gppnetwork.org",
- "109.192.0.0/24",
- )
- if err != nil {
- t.Fatalf("resolveEPDGWithECS: %v", err)
- }
- if len(addresses) != 2 || addresses[0].IP.String() != "139.7.117.168" || addresses[1].IP.String() != "139.7.117.169" {
- t.Fatalf("addresses = %#v", addresses)
- }
- }
- func TestResolveEPDGWithECSRejectsEmptyAnswer(t *testing.T) {
- server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
- _, _ = fmt.Fprint(w, `{"Status":0,"Answer":[{"type":5,"data":"gateway.example."}]}`)
- }))
- defer server.Close()
- if _, err := resolveEPDGWithECS(context.Background(), server.Client(), server.URL, "epdg.example", "192.0.2.0/24"); err == nil {
- t.Fatal("empty address answer was accepted")
- }
- }
|