(t *testing.T)
| 219 | } |
| 220 | |
| 221 | func TestDNSPerf(t *testing.T) { |
| 222 | reqTestCases := map[string]struct { |
| 223 | dnsPerfReq DNSPerfRequest |
| 224 | tr *recordingTransport |
| 225 | expReqBody string |
| 226 | }{ |
| 227 | "Required only": {DNSPerfRequest{Target: "example.com"}, &recordingTransport{}, `{"target":"example.com"}`}, |
| 228 | "With server": {DNSPerfRequest{Target: "example.com", DNSServer: "127.0.0.1"}, &recordingTransport{}, `{"target":"example.com","dnsServer":"127.0.0.1"}`}, |
| 229 | "With location": {DNSPerfRequest{Target: "example.com", Location: "Asia"}, &recordingTransport{}, `{"target":"example.com","location":"Asia"}`}, |
| 230 | } |
| 231 | ctx := context.Background() |
| 232 | for name, tc := range reqTestCases { |
| 233 | t.Run(name, func(t *testing.T) { |
| 234 | c, err := newTestClient(tc.tr) |
| 235 | if err != nil { |
| 236 | t.Fatalf("unexpected error %v", err) |
| 237 | } |
| 238 | c.Run.DNSPerf(ctx, &tc.dnsPerfReq) |
| 239 | if got := reqBody(tc.tr.req); tc.expReqBody != "" && tc.expReqBody != got { |
| 240 | t.Fatalf("expected %v; got %v", tc.expReqBody, got) |
| 241 | } |
| 242 | }) |
| 243 | } |
| 244 | |
| 245 | testCases := map[string]struct { |
| 246 | target string |
| 247 | dnsServer string |
| 248 | limit int |
| 249 | testID string |
| 250 | tr *respondingTransport |
| 251 | err error |
| 252 | }{ |
| 253 | "Invalid target": {"meep", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"target"}}, |
| 254 | "Invalid DNS server": {"example.com", "127.0", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"dns server"}}, |
| 255 | "Invalid limit": {"example.com", "127.0.0.1", freeMaxNodeCap + 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"limit"}}, |
| 256 | "HTTP error": {"example.com", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(400, "POST", `{"Error": "an error"}`)}, errors.New(`400: {"Error": "an error"}`)}, |
| 257 | "Failed": {"example.com", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"Error": "an error"}`)}, errors.New("an error")}, |
| 258 | "Created": {"example.com", "127.0.0.1", 1, "0123456789abcdefghij", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "0123456789abcdefghij"}`)}, nil}, |
| 259 | } |
| 260 | for name, tc := range testCases { |
| 261 | t.Run(name, func(t *testing.T) { |
| 262 | c, err := newTestClient(tc.tr) |
| 263 | if err != nil { |
| 264 | t.Fatalf("unexpected error %v", err) |
| 265 | } |
| 266 | got, err := c.Run.DNSPerf(ctx, &DNSPerfRequest{Target: tc.target, DNSServer: tc.dnsServer, Limit: tc.limit}) |
| 267 | if !cmpError(err, tc.err) { |
| 268 | t.Fatalf("expected %v; got %v", tc.err, err) |
| 269 | } |
| 270 | if string(got) != tc.testID { |
| 271 | t.Fatalf("expected %v; got %v", tc.testID, got) |
| 272 | } |
| 273 | }) |
| 274 | } |
| 275 | } |
| 276 | |
| 277 | func TestDNSPerfOutput(t *testing.T) { |
| 278 | testCases := map[string]struct { |
nothing calls this directly
no test coverage detected