X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Finternal%2Fpublishservice%2Fpublishservice_test.go;h=3f1a71f64c1e9899c7deb639773e1c07a2928cba;hb=refs%2Fchanges%2F85%2F12585%2F1;hp=6882bc9b5ba12a7099d98fc308074f7466dd2f98;hpb=a98d361fe90ebac93c13a599529c4b743e11ace2;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/internal/publishservice/publishservice_test.go b/capifcore/internal/publishservice/publishservice_test.go index 6882bc9..3f1a71f 100644 --- a/capifcore/internal/publishservice/publishservice_test.go +++ b/capifcore/internal/publishservice/publishservice_test.go @@ -68,7 +68,6 @@ func TestUnregisteredService(t *testing.T) { assert.Equal(t, http.StatusNotFound, *resultError.Status) } - func TestPublishUnpublishService(t *testing.T) { apfId := "apfId" @@ -259,6 +258,76 @@ func TestGetPublishedServices(t *testing.T) { assert.Len(t, result, 2) } +func TestGetAllowedServices(t *testing.T) { + serviceUnderTest := NewPublishService(nil, nil, nil) + + aefProfiles1 := []publishapi.AefProfile{} + apiId1 := "apiId1" + aefProfiles2 := []publishapi.AefProfile{} + apiId2 := "apiId2" + aefProfiles3 := []publishapi.AefProfile{} + apiId3 := "apiId3" + aefProfiles4 := []publishapi.AefProfile{} + apiId4 := "apiId4" + + serviceUnderTest.publishedServices["publisher1"] = []publishapi.ServiceAPIDescription{ + { + ApiId: &apiId1, + AefProfiles: &aefProfiles1, + }, + { + ApiId: &apiId2, + AefProfiles: &aefProfiles2, + }, + { + ApiId: &apiId3, + AefProfiles: &aefProfiles3, + }, + { + ApiId: &apiId4, + AefProfiles: &aefProfiles4, + }, + } + + serviceDescription := publishapi.ServiceAPIDescription{ + ApiId: &apiId4, + AefProfiles: &aefProfiles4, + } + serviceUnderTest.publishedServices["publisher2"] = []publishapi.ServiceAPIDescription{ + serviceDescription, + } + + allowedApiList := []publishapi.ServiceAPIDescription{ + { + ApiId: &apiId2, + AefProfiles: &aefProfiles2, + }, + { + ApiId: &apiId3, + AefProfiles: &aefProfiles3, + }, + } + + result := serviceUnderTest.GetAllowedPublishedServices(allowedApiList) + assert.Len(t, result, 2) + + result = serviceUnderTest.GetAllowedPublishedServices(nil) + assert.Len(t, result, 0) + + result = serviceUnderTest.GetAllowedPublishedServices([]publishapi.ServiceAPIDescription{}) + assert.Len(t, result, 0) + + // Create a list with no ApiIds + badApiList := []publishapi.ServiceAPIDescription{ + { + }, + { + }, + } + result = serviceUnderTest.GetAllowedPublishedServices(badApiList) + assert.Len(t, result, 0) +} + func TestUpdateDescription(t *testing.T) { apfId := "apfId" serviceApiId := "serviceApiId" @@ -332,6 +401,72 @@ func TestUpdateDescription(t *testing.T) { } } +func TestFailedUpdateDescription(t *testing.T) { + apfId := "apfId" + serviceApiId := "serviceApiId" + // Trying to update a different serviceApiId will cause a 400 error + updatedServiceApiId := "updatedServiceApiId" + aefId := "aefId" + apiName := "apiName" + description := "description" + + serviceRegisterMock := serviceMocks.ServiceRegister{} + serviceRegisterMock.On("GetAefsForPublisher", apfId).Return([]string{aefId, "otherAefId", "aefIdNew"}) + serviceRegisterMock.On("IsPublishingFunctionRegistered", apfId).Return(true) + 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} + (*serviceDescription.AefProfiles)[0].AefId = aefId + + // Modify the service + updatedServiceDescription := getServiceAPIDescription(aefId, apiName, description) + updatedServiceDescription.ApiId = &updatedServiceApiId + (*updatedServiceDescription.AefProfiles)[0].AefId = aefId + newDescription := "new description" + updatedServiceDescription.Description = &newDescription + newDomainName := "new domainName" + (*updatedServiceDescription.AefProfiles)[0].DomainName = &newDomainName + + newProfileDomain := "new profile Domain name" + var protocol publishapi.Protocol = "HTTP_1_1" + + test := append(*updatedServiceDescription.AefProfiles, publishapi.AefProfile{ + AefId: "aefIdNew", + DomainName: &newProfileDomain, + Protocol: &protocol, + Versions: []publishapi.Version{ + { + ApiVersion: "v1", + Resources: &[]publishapi.Resource{ + { + CommType: "REQUEST_RESPONSE", + Operations: &[]publishapi.Operation{ + "POST", + }, + ResourceName: "app", + Uri: "app", + }, + }, + }, + }, + }, + ) + updatedServiceDescription.AefProfiles = &test + + result := testutil.NewRequest().Put("/"+apfId+"/service-apis/"+serviceApiId).WithJsonBody(updatedServiceDescription).Go(t, requestHandler) + assert.Equal(t, http.StatusBadRequest, result.Code()) + + var resultError common29122.ProblemDetails + err := result.UnmarshalJsonToObject(&resultError) + assert.NoError(t, err, "error unmarshaling response") + + assert.Contains(t, *resultError.Cause, "ServiceAPIDescription ApiId doesn't match path parameter") + assert.Equal(t, http.StatusBadRequest, *resultError.Status) +} + func TestUpdateValidServiceWithDeletedFunction(t *testing.T) { apfId := "apfId" serviceApiId := "serviceApiId" @@ -352,10 +487,7 @@ func TestUpdateValidServiceWithDeletedFunction(t *testing.T) { newProfileDomain := "new profile Domain name" var protocol publishapi.Protocol = "HTTP_1_1" - test := make([]publishapi.AefProfile, 1) - test = *serviceDescription.AefProfiles - test = append(test, publishapi.AefProfile{ - + test := append(*serviceDescription.AefProfiles, publishapi.AefProfile{ AefId: "aefIdNew", DomainName: &newProfileDomain, Protocol: &protocol, @@ -382,10 +514,7 @@ func TestUpdateValidServiceWithDeletedFunction(t *testing.T) { //Modify the service updatedServiceDescription := getServiceAPIDescription(aefId, apiName, description) updatedServiceDescription.ApiId = &serviceApiId - test1 := make([]publishapi.AefProfile, 1) - test1 = *updatedServiceDescription.AefProfiles - test1 = append(test1, publishapi.AefProfile{ - + test1 := append(*updatedServiceDescription.AefProfiles, publishapi.AefProfile{ AefId: "aefIdNew", DomainName: &newProfileDomain, Protocol: &protocol,