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

Function TestDoPostRunRequest

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

Source from the content-addressed store, hash-verified

611}
612
613func TestDoPostRunRequest(t *testing.T) {
614 errDummyTr := errors.New("Post https://api.perfops.net/run/test: dummy impl")
615 reqTestCases := map[string]struct {
616 runReq RunRequest
617 tr *recordingTransport
618 expErr error
619 expReqBody string
620 }{
621 "Invalid target": {RunRequest{Target: "example"}, &recordingTransport{}, &argError{"target"}, ``},
622 "Target only": {RunRequest{Target: "example.com"}, &recordingTransport{}, errDummyTr, `{"target":"example.com"}`},
623 "With invalid limit": {RunRequest{Target: "example.com", Limit: freeMaxNodeCap + 2}, &recordingTransport{}, &argError{"limit"}, ``},
624 "With limit": {RunRequest{Target: "example.com", Limit: 2}, &recordingTransport{}, errDummyTr, `{"target":"example.com","limit":2}`},
625 "With location": {RunRequest{Target: "example.com", Location: "Asia"}, &recordingTransport{}, errDummyTr, `{"target":"example.com","location":"Asia"}`},
626 "With limit and location": {RunRequest{Target: "example.com", Limit: 2, Location: "Asia"}, &recordingTransport{}, errDummyTr, `{"target":"example.com","location":"Asia","limit":2}`},
627 "With node IDs": {RunRequest{Target: "example.com", Nodes: NodeIDs([]int{12, 34})}, &recordingTransport{}, errDummyTr, `{"target":"example.com","nodes":"12,34"}`},
628 }
629 ctx := context.Background()
630 for name, tc := range reqTestCases {
631 t.Run(name, func(t *testing.T) {
632 c, err := newTestClient(tc.tr)
633 if err != nil {
634 t.Fatalf("unexpected error %v", err)
635 }
636 _, err = c.Run.doPostRunRequest(ctx, "/run/test", &tc.runReq)
637 if !cmpError(err, tc.expErr) {
638 t.Fatalf("expected %v; got %v", tc.expErr, err)
639 }
640 if got := reqBody(tc.tr.req); tc.expReqBody != "" && tc.expReqBody != got {
641 t.Fatalf("expected %v; got %v", tc.expReqBody, got)
642 }
643 })
644 }
645
646 respTestCases := map[string]struct {
647 target string
648 testID string
649 tr *respondingTransport
650 err error
651 }{
652 "Invalid target": {"meep", "", &respondingTransport{}, &argError{"target"}},
653 "HTTP error": {"example.com", "", &respondingTransport{resp: dummyResp(400, "POST", `{"Error": "an error"}`)}, errors.New(`400: {"Error": "an error"}`)},
654 "Unauthorized": {"example.com", "", &respondingTransport{resp: dummyResp(401, "POST", `Unauthorized`)}, errors.New(`401: Unauthorized`)},
655 "Failed": {"example.com", "", &respondingTransport{resp: dummyResp(201, "POST", `{"Error": "an error"}`)}, errors.New("an error")},
656 "Created": {"example.com", "0123456789abcdefghij", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "0123456789abcdefghij"}`)}, nil},
657 }
658 for name, tc := range respTestCases {
659 t.Run(name, func(t *testing.T) {
660 c, err := newTestClient(tc.tr)
661 if err != nil {
662 t.Fatalf("unexpected error %v", err)
663 }
664 got, err := c.Run.doPostRunRequest(ctx, "/run/test", &RunRequest{Target: tc.target})
665 if !cmpError(err, tc.err) {
666 t.Fatalf("expected %v; got %v", tc.err, err)
667 }
668 if string(got) != tc.testID {
669 t.Fatalf("expected %v; got %v", tc.testID, got)
670 }

Callers

nothing calls this directly

Calls 6

NodeIDsTypeAlias · 0.85
newTestClientFunction · 0.85
dummyRespFunction · 0.85
doPostRunRequestMethod · 0.80
cmpErrorFunction · 0.70
reqBodyFunction · 0.70

Tested by

no test coverage detected