type InvokerManager struct {
onboardedInvokers map[string]invokerapi.APIInvokerEnrolmentDetails
- apiRegister publishservice.APIRegister
+ publishRegister publishservice.PublishRegister
nextId int64
lock sync.Mutex
}
-func NewInvokerManager(apiRegister publishservice.APIRegister) *InvokerManager {
+func NewInvokerManager(publishRegister publishservice.PublishRegister) *InvokerManager {
return &InvokerManager{
onboardedInvokers: make(map[string]invokerapi.APIInvokerEnrolmentDetails),
- apiRegister: apiRegister,
+ publishRegister: publishRegister,
nextId: 1000,
}
}
return true, sendCoreError(ctx, http.StatusBadRequest, "Invoker missing required OnboardingInformation.ApiInvokerPublicKey")
}
- if !im.areAPIsRegistered(invoker.ApiList) {
+ if !im.areAPIsPublished(invoker.ApiList) {
return true, sendCoreError(ctx, http.StatusBadRequest, "Some APIs needed by invoker are not registered")
}
return false, nil
}
-func (im *InvokerManager) areAPIsRegistered(apis *invokerapi.APIList) bool {
+func (im *InvokerManager) areAPIsPublished(apis *invokerapi.APIList) bool {
if apis == nil {
return true
}
- return im.apiRegister.AreAPIsRegistered((*[]publishapi.ServiceAPIDescription)(apis))
+ return im.publishRegister.AreAPIsPublished((*[]publishapi.ServiceAPIDescription)(apis))
}
func (im *InvokerManager) getId(invokerInfo *string) *string {
)
func TestOnboardInvoker(t *testing.T) {
- apiRegisterMock := publishmocks.APIRegister{}
- apiRegisterMock.On("AreAPIsRegistered", mock.Anything).Return(true)
- invokerUnderTest, requestHandler := getEcho(&apiRegisterMock)
+ publishRegisterMock := publishmocks.PublishRegister{}
+ publishRegisterMock.On("AreAPIsPublished", mock.Anything).Return(true)
+ invokerUnderTest, requestHandler := getEcho(&publishRegisterMock)
aefProfiles := []publishserviceapi.AefProfile{
getAefProfile("aefId"),
assert.Equal(t, "http://example.com/onboardedInvokers/"+*resultInvoker.ApiInvokerId, result.Recorder.Header().Get(echo.HeaderLocation))
assert.True(t, invokerUnderTest.IsInvokerRegistered("api_invoker_id_invoker_a"))
assert.True(t, invokerUnderTest.VerifyInvokerSecret("api_invoker_id_invoker_a", "onboarding_secret_invoker_a"))
- apiRegisterMock.AssertCalled(t, "AreAPIsRegistered", mock.Anything)
+ publishRegisterMock.AssertCalled(t, "AreAPIsPublished", mock.Anything)
// Onboard an invoker missing required NotificationDestination, should get 400 with problem details
invalidInvoker := invokermanagementapi.APIInvokerEnrolmentDetails{
}
func TestGetInvokerApiList(t *testing.T) {
- apiRegisterMock := publishmocks.APIRegister{}
- apiRegisterMock.On("AreAPIsRegistered", mock.Anything).Return(true)
- invokerUnderTest, requestHandler := getEcho(&apiRegisterMock)
+ publishRegisterMock := publishmocks.PublishRegister{}
+ publishRegisterMock.On("AreAPIsPublished", mock.Anything).Return(true)
+ invokerUnderTest, requestHandler := getEcho(&publishRegisterMock)
// Onboard two invokers
aefProfiles := []publishserviceapi.AefProfile{
assert.Equal(t, apiId, *(*wantedApiList)[0].ApiId)
}
-func getEcho(apiRegister publishservice.APIRegister) (*InvokerManager, *echo.Echo) {
+func getEcho(publishRegister publishservice.PublishRegister) (*InvokerManager, *echo.Echo) {
swagger, err := invokermanagementapi.GetSwagger()
if err != nil {
fmt.Fprintf(os.Stderr, "Error loading swagger spec\n: %s", err)
swagger.Servers = nil
- im := NewInvokerManager(apiRegister)
+ im := NewInvokerManager(publishRegister)
e := echo.New()
e.Use(echomiddleware.Logger())
+++ /dev/null
-// Code generated by mockery v2.14.0. DO NOT EDIT.
-
-package mocks
-
-import (
- mock "github.com/stretchr/testify/mock"
-
- publishserviceapi "oransc.org/nonrtric/capifcore/internal/publishserviceapi"
-)
-
-// APIRegister is an autogenerated mock type for the APIRegister type
-type APIRegister struct {
- mock.Mock
-}
-
-// AreAPIsRegistered provides a mock function with given fields: serviceDescriptions
-func (_m *APIRegister) AreAPIsRegistered(serviceDescriptions *[]publishserviceapi.ServiceAPIDescription) bool {
- ret := _m.Called(serviceDescriptions)
-
- var r0 bool
- if rf, ok := ret.Get(0).(func(*[]publishserviceapi.ServiceAPIDescription) bool); ok {
- r0 = rf(serviceDescriptions)
- } else {
- r0 = ret.Get(0).(bool)
- }
-
- return r0
-}
-
-// IsAPIRegistered provides a mock function with given fields: aefId, path
-func (_m *APIRegister) IsAPIRegistered(aefId string, path string) bool {
- ret := _m.Called(aefId, path)
-
- var r0 bool
- if rf, ok := ret.Get(0).(func(string, string) bool); ok {
- r0 = rf(aefId, path)
- } else {
- r0 = ret.Get(0).(bool)
- }
-
- return r0
-}
-
-type mockConstructorTestingTNewAPIRegister interface {
- mock.TestingT
- Cleanup(func())
-}
-
-// NewAPIRegister creates a new instance of APIRegister. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-func NewAPIRegister(t mockConstructorTestingTNewAPIRegister) *APIRegister {
- mock := &APIRegister{}
- mock.Mock.Test(t)
-
- t.Cleanup(func() { mock.AssertExpectations(t) })
-
- return mock
-}
--- /dev/null
+// Code generated by mockery v2.14.0. DO NOT EDIT.
+
+package mocks
+
+import (
+ mock "github.com/stretchr/testify/mock"
+
+ publishserviceapi "oransc.org/nonrtric/capifcore/internal/publishserviceapi"
+)
+
+// PublishRegister is an autogenerated mock type for the PublishRegister type
+type PublishRegister struct {
+ mock.Mock
+}
+
+// AreAPIsPublished provides a mock function with given fields: serviceDescriptions
+func (_m *PublishRegister) AreAPIsPublished(serviceDescriptions *[]publishserviceapi.ServiceAPIDescription) bool {
+ ret := _m.Called(serviceDescriptions)
+
+ var r0 bool
+ if rf, ok := ret.Get(0).(func(*[]publishserviceapi.ServiceAPIDescription) bool); ok {
+ r0 = rf(serviceDescriptions)
+ } else {
+ r0 = ret.Get(0).(bool)
+ }
+
+ return r0
+}
+
+// IsAPIPublished provides a mock function with given fields: aefId, path
+func (_m *PublishRegister) IsAPIPublished(aefId string, path string) bool {
+ ret := _m.Called(aefId, path)
+
+ var r0 bool
+ if rf, ok := ret.Get(0).(func(string, string) bool); ok {
+ r0 = rf(aefId, path)
+ } else {
+ r0 = ret.Get(0).(bool)
+ }
+
+ return r0
+}
+
+type mockConstructorTestingTNewPublishRegister interface {
+ mock.TestingT
+ Cleanup(func())
+}
+
+// NewPublishRegister creates a new instance of PublishRegister. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+func NewPublishRegister(t mockConstructorTestingTNewPublishRegister) *PublishRegister {
+ mock := &PublishRegister{}
+ mock.Mock.Test(t)
+
+ t.Cleanup(func() { mock.AssertExpectations(t) })
+
+ return mock
+}
log "github.com/sirupsen/logrus"
)
-//go:generate mockery --name APIRegister
-type APIRegister interface {
- AreAPIsRegistered(serviceDescriptions *[]publishserviceapi.ServiceAPIDescription) bool
- IsAPIRegistered(aefId, path string) bool
+//go:generate mockery --name PublishRegister
+type PublishRegister interface {
+ AreAPIsPublished(serviceDescriptions *[]publishserviceapi.ServiceAPIDescription) bool
+ IsAPIPublished(aefId, path string) bool
}
type PublishService struct {
}
}
-func (ps *PublishService) AreAPIsRegistered(serviceDescriptions *[]publishserviceapi.ServiceAPIDescription) bool {
+func (ps *PublishService) AreAPIsPublished(serviceDescriptions *[]publishserviceapi.ServiceAPIDescription) bool {
if serviceDescriptions != nil {
registeredApis := ps.getAllAefIds()
return allRegistered
}
-func (ps *PublishService) IsAPIRegistered(aefId, path string) bool {
+func (ps *PublishService) IsAPIPublished(aefId, path string) bool {
return slices.Contains(ps.getAllAefIds(), aefId)
}
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.AreAPIsRegistered(&wantedAPILIst))
- assert.True(t, serviceUnderTest.IsAPIRegistered("aefId", "app-management"))
+ assert.True(t, serviceUnderTest.AreAPIsPublished(&wantedAPILIst))
+ assert.True(t, serviceUnderTest.IsAPIPublished("aefId", "app-management"))
serviceRegisterMock.AssertCalled(t, "GetAefsForPublisher", apfId)
helmManagerMock.AssertCalled(t, "InstallHelmChart", "namespace", "repoName", "chartName", "releaseName")
assert.ElementsMatch(t, []string{aefId}, serviceUnderTest.getAllAefIds())
type Security struct {
serviceRegister providermanagement.ServiceRegister
- apiRegister publishservice.APIRegister
+ publishRegister publishservice.PublishRegister
invokerRegister invokermanagement.InvokerRegister
}
-func NewSecurity(serviceRegister providermanagement.ServiceRegister, apiRegister publishservice.APIRegister, invokerRegister invokermanagement.InvokerRegister) *Security {
+func NewSecurity(serviceRegister providermanagement.ServiceRegister, publishRegister publishservice.PublishRegister, invokerRegister invokermanagement.InvokerRegister) *Security {
return &Security{
serviceRegister: serviceRegister,
- apiRegister: apiRegister,
+ publishRegister: publishRegister,
invokerRegister: invokerRegister,
}
}
if !s.serviceRegister.IsFunctionRegistered(scopeData[0]) {
return sendCoreError(ctx, http.StatusBadRequest, "Function not registered")
}
- if !s.apiRegister.IsAPIRegistered(scopeData[0], scopeData[1]) {
+ if !s.publishRegister.IsAPIPublished(scopeData[0], scopeData[1]) {
return sendCoreError(ctx, http.StatusBadRequest, "API not published")
}
}
invokerRegisterMock.On("VerifyInvokerSecret", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(true)
serviceRegisterMock := servicemocks.ServiceRegister{}
serviceRegisterMock.On("IsFunctionRegistered", mock.AnythingOfType("string")).Return(true)
- apiRegisterMock := publishmocks.APIRegister{}
- apiRegisterMock.On("IsAPIRegistered", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(true)
+ publishRegisterMock := publishmocks.PublishRegister{}
+ publishRegisterMock.On("IsAPIPublished", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(true)
- requestHandler := getEcho(&serviceRegisterMock, &apiRegisterMock, &invokerRegisterMock)
+ requestHandler := getEcho(&serviceRegisterMock, &publishRegisterMock, &invokerRegisterMock)
data := url.Values{}
data.Set("client_id", "id")
invokerRegisterMock.AssertCalled(t, "IsInvokerRegistered", "id")
invokerRegisterMock.AssertCalled(t, "VerifyInvokerSecret", "id", "secret")
serviceRegisterMock.AssertCalled(t, "IsFunctionRegistered", "aefId")
- apiRegisterMock.AssertCalled(t, "IsAPIRegistered", "aefId", "path")
+ publishRegisterMock.AssertCalled(t, "IsAPIPublished", "aefId", "path")
}
func TestPostSecurityIdTokenInvokerNotRegistered(t *testing.T) {
invokerRegisterMock.On("VerifyInvokerSecret", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(true)
serviceRegisterMock := servicemocks.ServiceRegister{}
serviceRegisterMock.On("IsFunctionRegistered", mock.AnythingOfType("string")).Return(true)
- apiRegisterMock := publishmocks.APIRegister{}
- apiRegisterMock.On("IsAPIRegistered", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(false)
+ publishRegisterMock := publishmocks.PublishRegister{}
+ publishRegisterMock.On("IsAPIPublished", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(false)
- requestHandler := getEcho(&serviceRegisterMock, &apiRegisterMock, &invokerRegisterMock)
+ requestHandler := getEcho(&serviceRegisterMock, &publishRegisterMock, &invokerRegisterMock)
data := url.Values{}
data.Set("client_id", "id")
assert.Equal(t, &errMsg, problemDetails.Cause)
}
-func getEcho(serviceRegister providermanagement.ServiceRegister, apiRegister publishservice.APIRegister, invokerRegister invokermanagement.InvokerRegister) *echo.Echo {
+func getEcho(serviceRegister providermanagement.ServiceRegister, publishRegister publishservice.PublishRegister, invokerRegister invokermanagement.InvokerRegister) *echo.Echo {
swagger, err := securityapi.GetSwagger()
if err != nil {
fmt.Fprintf(os.Stderr, "Error loading swagger spec\n: %s", err)
swagger.Servers = nil
- s := NewSecurity(serviceRegister, apiRegister, invokerRegister)
+ s := NewSecurity(serviceRegister, publishRegister, invokerRegister)
e := echo.New()
e.Use(echomiddleware.Logger())