MCPcopy Create free account
hub / github.com/ProspectOne/perfops-cli / TestDNSResolve

Function TestDNSResolve

perfops/run_test.go:304–360  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

302}
303
304func 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

Callers

nothing calls this directly

Calls 5

newTestClientFunction · 0.85
dummyRespFunction · 0.85
DNSResolveMethod · 0.80
reqBodyFunction · 0.70
cmpErrorFunction · 0.70

Tested by

no test coverage detected