(t *testing.T)
| 302 | } |
| 303 | |
| 304 | func TestDNSResolve(t *testing.T) { |
| 305 | reqTestCases := map[string]struct { |
| 306 | dnsResolveReq DNSResolveRequest |
| 307 | tr *recordingTransport |
| 308 | expReqBody string |
| 309 | }{ |
| 310 | "Required only": {DNSResolveRequest{Target: "example.com", Param: "A", DNSServer: "127.0.0.1"}, &recordingTransport{}, `{"target":"example.com","param":"A","dnsServer":"127.0.0.1"}`}, |
| 311 | "With location": {DNSResolveRequest{Target: "example.com", Param: "A", DNSServer: "127.0.0.1", Location: "Asia"}, &recordingTransport{}, `{"target":"example.com","param":"A","dnsServer":"127.0.0.1","location":"Asia"}`}, |
| 312 | } |
| 313 | ctx := context.Background() |
| 314 | for name, tc := range reqTestCases { |
| 315 | t.Run(name, func(t *testing.T) { |
| 316 | c, err := newTestClient(tc.tr) |
| 317 | if err != nil { |
| 318 | t.Fatalf("unexpected error %v", err) |
| 319 | } |
| 320 | c.Run.DNSResolve(ctx, &tc.dnsResolveReq) |
| 321 | if got := reqBody(tc.tr.req); tc.expReqBody != "" && tc.expReqBody != got { |
| 322 | t.Fatalf("expected %v; got %v", tc.expReqBody, got) |
| 323 | } |
| 324 | }) |
| 325 | } |
| 326 | |
| 327 | testCases := map[string]struct { |
| 328 | target string |
| 329 | param string |
| 330 | dnsServer string |
| 331 | limit int |
| 332 | testID string |
| 333 | tr *respondingTransport |
| 334 | err error |
| 335 | }{ |
| 336 | "Invalid target": {"meep", "A", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"target"}}, |
| 337 | "Invalid param": {"example.com", "", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"param"}}, |
| 338 | "Missing DNS server": {"example.com", "A", "", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"dns server"}}, |
| 339 | "Invalid DNS server": {"example.com", "A", "127.0", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"dns server"}}, |
| 340 | "Invalid limit": {"example.com", "A", "127.0.0.1", freeMaxNodeCap + 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"limit"}}, |
| 341 | "HTTP error": {"example.com", "A", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(400, "POST", `{"Error": "an error"}`)}, errors.New(`400: {"Error": "an error"}`)}, |
| 342 | "Failed": {"example.com", "A", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"Error": "an error"}`)}, errors.New("an error")}, |
| 343 | "Created": {"example.com", "A", "127.0.0.1", 1, "0123456789abcdefghij", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "0123456789abcdefghij"}`)}, nil}, |
| 344 | } |
| 345 | for name, tc := range testCases { |
| 346 | t.Run(name, func(t *testing.T) { |
| 347 | c, err := newTestClient(tc.tr) |
| 348 | if err != nil { |
| 349 | t.Fatalf("unexpected error %v", err) |
| 350 | } |
| 351 | got, err := c.Run.DNSResolve(ctx, &DNSResolveRequest{Target: tc.target, Param: tc.param, DNSServer: tc.dnsServer, Limit: tc.limit}) |
| 352 | if !cmpError(err, tc.err) { |
| 353 | t.Fatalf("expected %v; got %v", tc.err, err) |
| 354 | } |
| 355 | if string(got) != tc.testID { |
| 356 | t.Fatalf("expected %v; got %v", tc.testID, got) |
| 357 | } |
| 358 | }) |
| 359 | } |
| 360 | } |
| 361 |
nothing calls this directly
no test coverage detected