+ invokerInfo := "invoker a"
+ invokerId := "api_invoker_id_" + strings.Replace(invokerInfo, " ", "_", 1)
+
+ // Attempt to update with an invoker without the ApiInvokerId provided in the parameter body. We should get 400 with problem details.
+ invalidInvoker := getInvoker(invokerInfo)
+ serviceUnderTest.onboardedInvokers[invokerId] = invalidInvoker
+
+ result := testutil.NewRequest().Put("/onboardedInvokers/"+invokerId).WithJsonBody(invalidInvoker).Go(t, requestHandler)
+ assert.Equal(t, http.StatusBadRequest, result.Code())
+
+ var problemDetails common29122.ProblemDetails
+ err := result.UnmarshalBodyToObject(&problemDetails)
+ assert.NoError(t, err, "error unmarshaling response")
+ assert.Equal(t, http.StatusBadRequest, *problemDetails.Status)
+
+ assert.Contains(t, *problemDetails.Cause, "APIInvokerEnrolmentDetails ApiInvokerId doesn't match path parameter")
+}
+
+func TestUpdateInvoker(t *testing.T) {
+ publishRegisterMock := publishmocks.PublishRegister{}
+ publishRegisterMock.On("GetAllPublishedServices").Return([]publishserviceapi.ServiceAPIDescription{})
+ serviceUnderTest, _, requestHandler := getEcho(&publishRegisterMock, nil)
+
+ invokerId := "invokerId"
+ invoker := invokermanagementapi.APIInvokerEnrolmentDetails{
+ ApiInvokerId: &invokerId,
+ NotificationDestination: "http://golang.cafe/",