Update invokermanagement
[nonrtric/plt/sme.git] / capifcore / internal / publishservice / publishservice_test.go
index c4112ce..7bb0152 100644 (file)
@@ -59,7 +59,11 @@ func TestPublishUnpublishService(t *testing.T) {
        assert.Equal(t, http.StatusNotFound, result.Code())
 
        apiName := "app-management"
-       description := "Description,namespace,repoName,chartName,releaseName"
+       namespace := "namespace"
+       repoName := "repoName"
+       chartName := "chartName"
+       releaseName := "releaseName"
+       description := fmt.Sprintf("Description,%s,%s,%s,%s", namespace, repoName, chartName, releaseName)
        newServiceDescription := getServiceAPIDescription(aefId, apiName, description)
 
        // Publish a service for provider
@@ -69,15 +73,15 @@ func TestPublishUnpublishService(t *testing.T) {
        var resultService publishapi.ServiceAPIDescription
        err := result.UnmarshalBodyToObject(&resultService)
        assert.NoError(t, err, "error unmarshaling response")
-       newApiId := "api_id_app-management"
+       newApiId := "api_id_" + apiName
        assert.Equal(t, *resultService.ApiId, newApiId)
        assert.Equal(t, "http://example.com/"+apfId+"/service-apis/"+*resultService.ApiId, result.Recorder.Header().Get(echo.HeaderLocation))
        newServiceDescription.ApiId = &newApiId
        wantedAPILIst := []publishapi.ServiceAPIDescription{newServiceDescription}
        assert.True(t, serviceUnderTest.AreAPIsPublished(&wantedAPILIst))
-       assert.True(t, serviceUnderTest.IsAPIPublished("aefId", "app-management"))
+       assert.True(t, serviceUnderTest.IsAPIPublished(aefId, apiName))
        serviceRegisterMock.AssertCalled(t, "GetAefsForPublisher", apfId)
-       helmManagerMock.AssertCalled(t, "InstallHelmChart", "namespace", "repoName", "chartName", "releaseName")
+       helmManagerMock.AssertCalled(t, "InstallHelmChart", namespace, repoName, chartName, releaseName)
        assert.ElementsMatch(t, []string{aefId}, serviceUnderTest.getAllAefIds())
 
        // Check that the service is published for the provider
@@ -93,7 +97,7 @@ func TestPublishUnpublishService(t *testing.T) {
        result = testutil.NewRequest().Delete("/"+apfId+"/service-apis/"+newApiId).Go(t, requestHandler)
 
        assert.Equal(t, http.StatusNoContent, result.Code())
-       helmManagerMock.AssertCalled(t, "UninstallHelmChart", "namespace", "chartName")
+       helmManagerMock.AssertCalled(t, "UninstallHelmChart", namespace, chartName)
        assert.Empty(t, serviceUnderTest.getAllAefIds())
 
        // Check no services published
@@ -118,8 +122,8 @@ func TestPostUnpublishedServiceWithUnregisteredFunction(t *testing.T) {
        var resultError common29122.ProblemDetails
        err := result.UnmarshalBodyToObject(&resultError)
        assert.NoError(t, err, "error unmarshaling response")
-       errMsg := "Function not registered, aefId"
-       assert.Equal(t, &errMsg, resultError.Cause)
+       assert.Contains(t, *resultError.Cause, aefId)
+       assert.Contains(t, *resultError.Cause, "not registered")
        notFound := http.StatusNotFound
        assert.Equal(t, &notFound, resultError.Status)
 }
@@ -158,6 +162,54 @@ func TestGetServices(t *testing.T) {
        assert.Contains(t, resultServices, serviceDescription2)
 }
 
+func TestGetPublishedServices(t *testing.T) {
+       serviceUnderTest := NewPublishService(nil, nil)
+
+       profiles := make([]publishapi.AefProfile, 1)
+       serviceDescription := publishapi.ServiceAPIDescription{
+               AefProfiles: &profiles,
+       }
+       serviceUnderTest.publishedServices["publisher1"] = []publishapi.ServiceAPIDescription{
+               serviceDescription,
+       }
+       serviceUnderTest.publishedServices["publisher2"] = []publishapi.ServiceAPIDescription{
+               serviceDescription,
+       }
+       result := serviceUnderTest.GetAllPublishedServices()
+       assert.Len(t, result, 2)
+}
+
+func TestUpdateDescription(t *testing.T) {
+       apfId := "apfId"
+       serviceApiId := "serviceApiId"
+       aefId := "aefId"
+       apiName := "apiName"
+       description := "description"
+       serviceRegisterMock := serviceMocks.ServiceRegister{}
+       serviceRegisterMock.On("GetAefsForPublisher", apfId).Return([]string{aefId, "otherAefId"})
+       helmManagerMock := helmMocks.HelmManager{}
+       helmManagerMock.On("InstallHelmChart", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
+       serviceUnderTest, requestHandler := getEcho(&serviceRegisterMock, &helmManagerMock)
+
+       serviceDescription := getServiceAPIDescription(aefId, apiName, description)
+       serviceDescription.ApiId = &serviceApiId
+       serviceUnderTest.publishedServices[apfId] = []publishapi.ServiceAPIDescription{serviceDescription}
+
+       //Modify the service
+       updatedServiceDescription := getServiceAPIDescription(aefId, apiName, description)
+       updatedServiceDescription.ApiId = &description
+       newDescription := "new description"
+       updatedServiceDescription.Description = &newDescription
+       result := testutil.NewRequest().Put("/"+apfId+"/service-apis/"+serviceApiId).WithJsonBody(updatedServiceDescription).Go(t, requestHandler)
+
+       var resultService publishapi.ServiceAPIDescription
+       assert.Equal(t, http.StatusOK, result.Code())
+       err := result.UnmarshalBodyToObject(&resultService)
+       assert.NoError(t, err, "error unmarshaling response")
+       assert.Equal(t, resultService.Description, &newDescription)
+
+}
+
 func getEcho(serviceRegister providermanagement.ServiceRegister, helmManager helmmanagement.HelmManager) (*PublishService, *echo.Echo) {
        swagger, err := publishapi.GetSwagger()
        if err != nil {