Skip to content

Commit

Permalink
feat(server): add endpoint to update test trigger response (#3117)
Browse files Browse the repository at this point in the history
feat(server): add endpoint to update test trigger
  • Loading branch information
mathnogueira committed Sep 1, 2023
1 parent 38714de commit 10c8d97
Show file tree
Hide file tree
Showing 9 changed files with 248 additions and 27 deletions.
2 changes: 0 additions & 2 deletions api/grpc.yaml
Expand Up @@ -31,8 +31,6 @@ components:

GRPCResponse:
type: object
required:
- statusCode
properties:
statusCode:
type: integer
Expand Down
23 changes: 23 additions & 0 deletions api/openapi.yaml
Expand Up @@ -518,6 +518,29 @@ paths:
responses:
"204":
description: OK
# TODO: remove this as soon as we refactor our queues
patch:
tags:
- api
parameters:
- $ref: "./parameters.yaml#/components/parameters/testId"
- $ref: "./parameters.yaml#/components/parameters/runId"
summary: "update a test run"
description: "update a test run"
operationId: updateTestRun
requestBody:
content:
application/json:
schema:
$ref: "./tests.yaml#/components/schemas/TestRun"
responses:
200:
description: successfuly updated the test run
content:
application/json:
schema:
$ref: "./tests.yaml#/components/schemas/TestRun"

/tests/{testId}/definition:
get:
tags:
Expand Down
116 changes: 116 additions & 0 deletions cli/openapi/api_api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 25 additions & 14 deletions cli/openapi/model_grpc_response.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions server/http/controller.go
Expand Up @@ -708,3 +708,25 @@ func (c *controller) GetVersion(ctx context.Context) (openapi.ImplResponse, erro

return openapi.Response(http.StatusOK, version), nil
}

func (c *controller) UpdateTestRun(ctx context.Context, testID string, runID int32, testRun openapi.TestRun) (openapi.ImplResponse, error) {
existingRun, err := c.testRunRepository.GetRun(ctx, id.ID(testID), int(runID))
if err != nil {
return openapi.Response(http.StatusNotFound, err.Error()), err
}

run, err := c.mappers.In.Run(testRun)
if err != nil {
return openapi.Response(http.StatusBadRequest, err.Error()), err
}

// Prevents bad data in other fields to override correct data
existingRun.TriggerResult = run.TriggerResult

err = c.testRunRepository.UpdateRun(ctx, existingRun)
if err != nil {
return openapi.Response(http.StatusInternalServerError, err.Error()), err
}

return openapi.Response(http.StatusOK, run), err
}
2 changes: 2 additions & 0 deletions server/openapi/api.go
Expand Up @@ -41,6 +41,7 @@ type ApiApiRouter interface {
RunTestSuite(http.ResponseWriter, *http.Request)
StopTestRun(http.ResponseWriter, *http.Request)
TestConnection(http.ResponseWriter, *http.Request)
UpdateTestRun(http.ResponseWriter, *http.Request)
}

// ResourceApiApiRouter defines the required methods for binding the api requests to a responses for the ResourceApiApi
Expand Down Expand Up @@ -112,6 +113,7 @@ type ApiApiServicer interface {
RunTestSuite(context.Context, string, RunInformation) (ImplResponse, error)
StopTestRun(context.Context, string, int32) (ImplResponse, error)
TestConnection(context.Context, DataStore) (ImplResponse, error)
UpdateTestRun(context.Context, string, int32, TestRun) (ImplResponse, error)
}

// ResourceApiApiServicer defines the api actions for the ResourceApiApi service
Expand Down
39 changes: 39 additions & 0 deletions server/openapi/api_api.go
Expand Up @@ -188,6 +188,12 @@ func (c *ApiApiController) Routes() Routes {
"/api/config/connection",
c.TestConnection,
},
{
"UpdateTestRun",
strings.ToUpper("Patch"),
"/api/tests/{testId}/run/{runId}",
c.UpdateTestRun,
},
}
}

Expand Down Expand Up @@ -725,3 +731,36 @@ func (c *ApiApiController) TestConnection(w http.ResponseWriter, r *http.Request
EncodeJSONResponse(result.Body, &result.Code, w)

}

// UpdateTestRun - update a test run
func (c *ApiApiController) UpdateTestRun(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
testIdParam := params["testId"]

runIdParam, err := parseInt32Parameter(params["runId"], true)
if err != nil {
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
return
}

testRunParam := TestRun{}
d := json.NewDecoder(r.Body)
d.DisallowUnknownFields()
if err := d.Decode(&testRunParam); err != nil {
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
return
}
if err := AssertTestRunRequired(testRunParam); err != nil {
c.errorHandler(w, r, err, nil)
return
}
result, err := c.service.UpdateTestRun(r.Context(), testIdParam, runIdParam, testRunParam)
// If an error occurred, encode the error with the status code
if err != nil {
c.errorHandler(w, r, err, &result)
return
}
// If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)

}
11 changes: 1 addition & 10 deletions server/openapi/model_grpc_response.go
Expand Up @@ -10,7 +10,7 @@
package openapi

type GrpcResponse struct {
StatusCode int32 `json:"statusCode"`
StatusCode int32 `json:"statusCode,omitempty"`

Metadata []GrpcHeader `json:"metadata,omitempty"`

Expand All @@ -19,15 +19,6 @@ type GrpcResponse struct {

// AssertGrpcResponseRequired checks if the required fields are not zero-ed
func AssertGrpcResponseRequired(obj GrpcResponse) error {
elements := map[string]interface{}{
"statusCode": obj.StatusCode,
}
for name, el := range elements {
if isZero := IsZeroValue(el); isZero {
return &RequiredError{Field: name}
}
}

for _, el := range obj.Metadata {
if err := AssertGrpcHeaderRequired(el); err != nil {
return err
Expand Down

0 comments on commit 10c8d97

Please sign in to comment.