X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Finternal%2Fprovidermanagement%2Fprovidermanagement_test.go;h=cbcf43899021976071ee9a887d46d5574087417e;hb=d17ee019461493f52df06074ce95a6cb951ffdc4;hp=de647faed1ee2684a21757de43e33cd6122db0c2;hpb=829338e085a03b58b6bb8a54b8c67bfffbf84952;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/internal/providermanagement/providermanagement_test.go b/capifcore/internal/providermanagement/providermanagement_test.go index de647fa..cbcf438 100644 --- a/capifcore/internal/providermanagement/providermanagement_test.go +++ b/capifcore/internal/providermanagement/providermanagement_test.go @@ -49,6 +49,49 @@ var ( funcIdAEF = "AEF_id_rApp_as_AEF" ) +func TestFailedUpdateValidProviderWithNewFunction(t *testing.T) { + managerUnderTest, requestHandler := getEcho() + + provider := getProvider() + provider.ApiProvDomId = &domainID + (*provider.ApiProvFuncs)[0].ApiProvFuncId = &funcIdAPF + (*provider.ApiProvFuncs)[1].ApiProvFuncId = &funcIdAMF + (*provider.ApiProvFuncs)[2].ApiProvFuncId = &funcIdAEF + managerUnderTest.registeredProviders[domainID] = provider + + // Modify the provider + updatedProvider := getProvider() + + // For this test case, we do not set updatedProvider.ApiProvDomId, so that we can test for a 400 error below. + (*updatedProvider.ApiProvFuncs)[0].ApiProvFuncId = &funcIdAPF + (*updatedProvider.ApiProvFuncs)[1].ApiProvFuncId = &funcIdAMF + (*updatedProvider.ApiProvFuncs)[2].ApiProvFuncId = &funcIdAEF + newDomainInfo := "New domain info" + updatedProvider.ApiProvDomInfo = &newDomainInfo + newFunctionInfo := "New function info" + (*updatedProvider.ApiProvFuncs)[0].ApiProvFuncInfo = &newFunctionInfo + newFuncInfoAEF := "new func as AEF" + testFuncs := *updatedProvider.ApiProvFuncs + testFuncs = append(testFuncs, provapi.APIProviderFunctionDetails{ + ApiProvFuncInfo: &newFuncInfoAEF, + ApiProvFuncRole: provapi.ApiProviderFuncRoleAEF, + RegInfo: provapi.RegistrationInformation{ + ApiProvPubKey: "key", + }, + }) + updatedProvider.ApiProvFuncs = &testFuncs + + result := testutil.NewRequest().Put("/registrations/"+domainID).WithJsonBody(updatedProvider).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, "APIProviderEnrolmentDetails ApiProvDomId doesn't match path parameter") + assert.False(t, managerUnderTest.IsFunctionRegistered("AEF_id_new_func_as_AEF")) +} + func TestRegisterValidProvider(t *testing.T) { managerUnderTest, requestHandler := getEcho() @@ -68,6 +111,15 @@ func TestRegisterValidProvider(t *testing.T) { assert.Empty(t, resultProvider.FailReason) assert.Equal(t, "http://example.com/registrations/"+*resultProvider.ApiProvDomId, result.Recorder.Header().Get(echo.HeaderLocation)) assert.True(t, managerUnderTest.IsFunctionRegistered("APF_id_rApp_as_APF")) + + // Register same provider again should result in Forbidden + result = testutil.NewRequest().Post("/registrations").WithJsonBody(newProvider).Go(t, requestHandler) + var errorObj common29122.ProblemDetails + assert.Equal(t, http.StatusForbidden, result.Code()) + err = result.UnmarshalBodyToObject(&errorObj) + assert.NoError(t, err, "error unmarshaling response") + assert.Equal(t, http.StatusForbidden, *errorObj.Status) + assert.Contains(t, *errorObj.Cause, "already registered") } func TestUpdateValidProviderWithNewFunction(t *testing.T) { @@ -170,6 +222,7 @@ func TestUpdateMissingFunction(t *testing.T) { assert.Equal(t, http.StatusBadRequest, result.Code()) err := result.UnmarshalBodyToObject(&errorObj) assert.NoError(t, err, "error unmarshaling response") + assert.Equal(t, http.StatusBadRequest, *errorObj.Status) assert.Contains(t, *errorObj.Cause, funcIdAPF) assert.Contains(t, *errorObj.Cause, "not registered") } @@ -200,9 +253,8 @@ func TestProviderHandlingValidation(t *testing.T) { var problemDetails common29122.ProblemDetails err := result.UnmarshalBodyToObject(&problemDetails) assert.NoError(t, err, "error unmarshaling response") - badRequest := http.StatusBadRequest - assert.Equal(t, &badRequest, problemDetails.Status) - assert.Contains(t, *problemDetails.Cause, "Provider not valid") + assert.Equal(t, http.StatusBadRequest, *problemDetails.Status) + assert.Contains(t, *problemDetails.Cause, "missing") assert.Contains(t, *problemDetails.Cause, "regSec") }