+ assert.Equal(t, 2, len(*resultInvoker.ServiceAPIDescriptions))
+}
+
+func TestGetAllServiceAPIsWhenMissingProvider(t *testing.T) {
+ invokerId := "unregistered"
+ invokerRegisterrMock := getInvokerRegisterMock(invokerId, nil)
+
+ requestHandler := getEcho(invokerRegisterrMock)
+
+ // Get all APIs, without any filter
+ result := testutil.NewRequest().Get("/allServiceAPIs?api-invoker-id="+invokerId).Go(t, requestHandler)
+
+ assert.Equal(t, http.StatusNotFound, result.Code())
+ var problemDetails common29122.ProblemDetails
+ err := result.UnmarshalBodyToObject(&problemDetails)
+ assert.NoError(t, err, "error unmarshaling response")
+ notFound := http.StatusNotFound
+ assert.Equal(t, ¬Found, problemDetails.Status)
+ errMsg := "Invoker not registered"
+ assert.Equal(t, &errMsg, problemDetails.Cause)
+}
+
+func TestFilterApiName(t *testing.T) {
+ var err error
+
+ apiName := "apiName1"
+ apiList := []publishapi.ServiceAPIDescription{
+ getAPI(apiName, "", "", "", nil, nil, ""),
+ getAPI("apiName2", "", "", "", nil, nil, ""),
+ }
+ invokerId := "api_invoker_id"
+ invokerRegisterrMock := getInvokerRegisterMock(invokerId, apiList)
+ requestHandler := getEcho(invokerRegisterrMock)
+
+ // Get APIs with filter
+ result := testutil.NewRequest().Get("/allServiceAPIs?api-invoker-id="+invokerId+"&api-name="+apiName).Go(t, requestHandler)
+
+ assert.Equal(t, http.StatusOK, result.Code())
+ var resultInvoker discoverserviceapi.DiscoveredAPIs
+ err = result.UnmarshalBodyToObject(&resultInvoker)
+ assert.NoError(t, err, "error unmarshaling response")
+ assert.Equal(t, 1, len(*resultInvoker.ServiceAPIDescriptions))
+ assert.Equal(t, "apiName1", (*resultInvoker.ServiceAPIDescriptions)[0].ApiName)
+}
+
+func TestFilterAefId(t *testing.T) {
+ var err error
+
+ aefId := "aefId"
+ apiList := []publishapi.ServiceAPIDescription{
+ getAPI("apiName1", aefId, "", "", nil, nil, ""),
+ getAPI("apiName2", "otherAefId", "", "", nil, nil, ""),
+ }
+ invokerId := "api_invoker_id"
+ invokerRegisterrMock := getInvokerRegisterMock(invokerId, apiList)
+ requestHandler := getEcho(invokerRegisterrMock)
+
+ // Get APIs with filter
+ result := testutil.NewRequest().Get("/allServiceAPIs?api-invoker-id="+invokerId+"&aef-id="+aefId).Go(t, requestHandler)
+
+ assert.Equal(t, http.StatusOK, result.Code())
+ var resultInvoker discoverserviceapi.DiscoveredAPIs
+ err = result.UnmarshalBodyToObject(&resultInvoker)
+ assert.NoError(t, err, "error unmarshaling response")
+ assert.Equal(t, 1, len(*resultInvoker.ServiceAPIDescriptions))
+ assert.Equal(t, "apiName1", (*resultInvoker.ServiceAPIDescriptions)[0].ApiName)
+}
+
+func TestFilterVersion(t *testing.T) {
+ var err error
+
+ version := "v1"
+ apiList := []publishapi.ServiceAPIDescription{
+ getAPI("apiName1", "", "", version, nil, nil, ""),
+ getAPI("apiName2", "", "", "v2", nil, nil, ""),
+ }
+ invokerId := "api_invoker_id"
+ invokerRegisterrMock := getInvokerRegisterMock(invokerId, apiList)
+ requestHandler := getEcho(invokerRegisterrMock)
+
+ // Get APIs with filter
+ result := testutil.NewRequest().Get("/allServiceAPIs?api-invoker-id="+invokerId+"&api-version="+version).Go(t, requestHandler)
+
+ assert.Equal(t, http.StatusOK, result.Code())
+ var resultInvoker discoverserviceapi.DiscoveredAPIs
+ err = result.UnmarshalBodyToObject(&resultInvoker)
+ assert.NoError(t, err, "error unmarshaling response")
+ assert.Equal(t, 1, len(*resultInvoker.ServiceAPIDescriptions))
+ assert.Equal(t, "apiName1", (*resultInvoker.ServiceAPIDescriptions)[0].ApiName)
+}
+
+func TestFilterCommType(t *testing.T) {
+ var err error
+
+ commType := publishapi.CommunicationTypeREQUESTRESPONSE
+ apiList := []publishapi.ServiceAPIDescription{
+ getAPI("apiName1", "", "", "", nil, nil, commType),
+ getAPI("apiName2", "", "", "", nil, nil, publishapi.CommunicationTypeSUBSCRIBENOTIFY),
+ }
+ invokerId := "api_invoker_id"
+ invokerRegisterrMock := getInvokerRegisterMock(invokerId, apiList)
+ requestHandler := getEcho(invokerRegisterrMock)