diff --git a/src/controller/scanner/base_controller.go b/src/controller/scanner/base_controller.go index 1c2f87bfb..720def461 100644 --- a/src/controller/scanner/base_controller.go +++ b/src/controller/scanner/base_controller.go @@ -242,7 +242,7 @@ func (bc *basicController) GetRegistrationByProject(projectID int64, options ... } } - return registration, err + return registration, nil } // Ping ... diff --git a/src/controller/scanner/base_controller_test.go b/src/controller/scanner/base_controller_test.go index 4720abcd5..2ec4b3542 100644 --- a/src/controller/scanner/base_controller_test.go +++ b/src/controller/scanner/base_controller_test.go @@ -15,6 +15,7 @@ package scanner import ( + "fmt" "testing" "github.com/goharbor/harbor/src/common/models" @@ -46,8 +47,8 @@ func TestController(t *testing.T) { suite.Run(t, new(ControllerTestSuite)) } -// SetupSuite prepares env for the controller test suite -func (suite *ControllerTestSuite) SetupSuite() { +// SetupTest prepares env for the controller test suite +func (suite *ControllerTestSuite) SetupTest() { suite.mMgr = &scannertesting.Manager{} suite.mMeta = new(MockProMetaManager) @@ -227,6 +228,31 @@ func (suite *ControllerTestSuite) TestGetRegistrationByProject() { assert.Equal(suite.T(), "forUT", r.Name) } +// TestGetRegistrationByProjectWhenPingError tests GetRegistrationByProject +func (suite *ControllerTestSuite) TestGetRegistrationByProjectWhenPingError() { + m := make(map[string]string, 1) + m[proScannerMetaKey] = "uuid" + + // Configured at project level + var pid int64 = 1 + suite.sample.UUID = "uuid" + + suite.mMeta.On("Get", pid, []string{proScannerMetaKey}).Return(m, nil) + suite.mMgr.On("Get", "uuid").Return(suite.sample, nil) + + // Ping error + mc := &v1testing.Client{} + mc.On("GetMetadata").Return(nil, fmt.Errorf("getMetadata error")) + + mcp := &v1testing.ClientPool{} + mocktesting.OnAnything(mcp, "Get").Return(mc, nil) + suite.c.clientPool = mcp + + r, err := suite.c.GetRegistrationByProject(pid) + require.NoError(suite.T(), err) + assert.Equal(suite.T(), "unhealthy", r.Health) +} + // TestPing ... func (suite *ControllerTestSuite) TestPing() { meta, err := suite.c.Ping(suite.sample)