with-expecter: false
outpkg: "{{.PackageName}}"
mockname: "{{.InterfaceName}}"
filename: "{{.InterfaceName | snakecase}}.go"
packages:
  # controller related mocks
  github.com/goharbor/harbor/src/controller/artifact:
    interfaces:
      Controller:
        config:
          dir: testing/controller/artifact
  github.com/goharbor/harbor/src/controller/artifact/processor:
    interfaces:
      Processor:
        config:
          dir: testing/pkg/processor
  github.com/goharbor/harbor/src/controller/artifact/annotation:
    interfaces:
      Parser:
        config:
          dir: testing/pkg/parser
          outpkg: parser
  github.com/goharbor/harbor/src/controller/blob:
    interfaces:
      Controller:
        config:
          dir: testing/controller/blob
  github.com/goharbor/harbor/src/controller/project:
    interfaces:
      Controller:
        config:
          dir: testing/controller/project
  github.com/goharbor/harbor/src/controller/quota:
    interfaces:
      Controller:
        config:
          dir: testing/controller/quota
  github.com/goharbor/harbor/src/controller/scan:
    interfaces:
      Controller:
        config:
          dir: testing/controller/scan
      Checker:
        config:
          dir: testing/controller/scan
  github.com/goharbor/harbor/src/controller/scanner:
    interfaces:
      Controller:
        config:
          dir: testing/controller/scanner
  github.com/goharbor/harbor/src/controller/replication:
    interfaces:
      Controller:
        config:
          dir: testing/controller/replication
  github.com/goharbor/harbor/src/controller/replication/flow:
    interfaces:
      Controller:
        config:
          dir: controller/replication
          outpkg: replication
          mockname: flowController
          filename: mock_flow_controller_test.go
      registryAdapter:
        config:
          dir: controller/replication/flow
          outpkg: flow
          mockname: mockAdapter
          filename: mock_adapter_test.go
  github.com/goharbor/harbor/src/controller/robot:
    interfaces:
      Controller:
        config:
          dir: testing/controller/robot
  github.com/goharbor/harbor/src/controller/proxy:
    interfaces:
      RemoteInterface:
        config:
          dir: testing/controller/proxy
  github.com/goharbor/harbor/src/controller/retention:
    interfaces:
      Controller:
        config:
          dir: testing/controller/retention
  github.com/goharbor/harbor/src/controller/config:
    interfaces:
      Controller:
        config:
          dir: testing/controller/config
  github.com/goharbor/harbor/src/controller/user:
    interfaces:
      Controller:
        config:
          dir: testing/controller/user
  github.com/goharbor/harbor/src/controller/repository:
    interfaces:
      Controller:
        config:
          dir: testing/controller/repository
  github.com/goharbor/harbor/src/controller/purge:
    interfaces:
      Controller:
        config:
          dir: testing/controller/purge
  github.com/goharbor/harbor/src/controller/jobservice:
    interfaces:
      SchedulerController:
        config:
          dir: testing/controller/jobservice
  github.com/goharbor/harbor/src/controller/systemartifact:
    interfaces:
      Controller:
        config:
          dir: testing/controller/systemartifact
  github.com/goharbor/harbor/src/controller/scandataexport:
    interfaces:
      Controller:
        config:
          dir: testing/controller/scandataexport
  github.com/goharbor/harbor/src/controller/task:
    interfaces:
      Controller:
        config:
          dir: testing/controller/task
      ExecutionController:
        config:
          dir: testing/controller/task
  github.com/goharbor/harbor/src/controller/webhook:
    interfaces:
      Controller:
        config:
          dir: testing/controller/webhook
  github.com/goharbor/harbor/src/controller/securityhub:
    interfaces:
      Controller:
        config:
          dir: testing/controller/securityhub

  # jobservice related mocks
  github.com/goharbor/harbor/src/jobservice/mgt:
    interfaces:
      Manager:
        config:
          dir: jobservice/mgt
          outpkg: mgt
          mockname: MockManager
          filename: mock_manager.go
  github.com/goharbor/harbor/src/jobservice/period:
    interfaces:
      Scheduler:
        config:
          dir: jobservice/period
          outpkg: period
          mockname: MockScheduler
          filename: mock_scheduler.go
          inpackage: True

  # common and lib related mocks
  github.com/goharbor/harbor/src/lib/cache:
    interfaces:
      Cache:
        configs:
          - dir: lib/cache
            outpkg: cache
            mockname: mockCache
            filename: mock_cache_test.go
            inpackage: True
          - dir: testing/lib/cache
      Iterator:
        config:
          dir: testing/lib/cache
  github.com/goharbor/harbor/src/lib/orm:
    interfaces:
      Creator:
        config:
          dir: testing/lib/orm
  github.com/goharbor/harbor/src/lib/config:
    interfaces:
      Manager:
        config:
          dir: testing/lib/config
  github.com/goharbor/harbor/src/common/job:
    interfaces:
      Client:
        config:
          dir: pkg/task
          outpkg: task
          mockname: mockJobserviceClient
          filename: mock_jobservice_client_test.go
  github.com/goharbor/harbor/src/common/security:
    interfaces:
      Context:
        config:
          dir: testing/common/security

  # pkg related mocks
  github.com/goharbor/harbor/src/pkg/artifact:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/artifact
  github.com/goharbor/harbor/src/pkg/artifactrash:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/artifactrash
  github.com/goharbor/harbor/src/pkg/blob:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/blob
  github.com/goharbor/harbor/src/pkg/project:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/project
  github.com/goharbor/harbor/src/pkg/project/metadata:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/project/metadata
  github.com/goharbor/harbor/src/pkg/quota:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/quota
  github.com/goharbor/harbor/src/pkg/quota/driver:
    interfaces:
      Driver:
        config:
          dir: testing/pkg/quota/driver
  github.com/goharbor/harbor/src/pkg/scan:
    interfaces:
      Handler:
        config:
          dir: testing/pkg/scan
  github.com/goharbor/harbor/src/pkg/scan/postprocessors:
    interfaces:
      NativeScanReportConverter:
        config:
          dir: testing/pkg/scan/postprocessors
  github.com/goharbor/harbor/src/pkg/scan/report:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/scan/report
  github.com/goharbor/harbor/src/pkg/scan/rest/v1:
    config:
      dir: testing/pkg/scan/rest/v1
      all: True
  github.com/goharbor/harbor/src/pkg/scan/scanner:
    config:
      dir: testing/pkg/scan/scanner
      all: True
  github.com/goharbor/harbor/src/pkg/scheduler:
    interfaces:
      DAO:
        config:
          dir: pkg/scheduler
          outpkg: scheduler
          mockname: mockDAO
          filename: mock_dao_test.go
          inpackage: True
      Scheduler:
        config:
          dir: testing/pkg/scheduler
  github.com/goharbor/harbor/src/pkg/task:
    interfaces:
      Manager:
        configs:
          - dir: pkg/task
            outpkg: task
            mockname: mockTaskManager
            filename: mock_task_manager_test.go
            inpackage: True
          - dir: testing/pkg/task
      SweepManager:
        config:
          dir: pkg/task
          outpkg: task
          mockname: mockSweepManager
          filename: mock_sweep_manager_test.go
          inpackage: True
      ExecutionManager:
        config:
          dir: testing/pkg/task
  github.com/goharbor/harbor/src/pkg/task/dao:
    interfaces:
      TaskDAO:
        config:
          dir: pkg/task
          outpkg: task
          mockname: mockTaskDAO
          filename: mock_task_dao_test.go
      ExecutionDAO:
        config:
          dir: pkg/task
          outpkg: task
          mockname: mockExecutionDAO
          filename: mock_execution_dao_test.go
  github.com/goharbor/harbor/src/pkg/user:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/user
  github.com/goharbor/harbor/src/pkg/user/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/user/dao
  github.com/goharbor/harbor/src/pkg/oidc:
    interfaces:
      MetaManager:
        config:
          dir: testing/pkg/oidc
  github.com/goharbor/harbor/src/pkg/oidc/dao:
    interfaces:
      MetaDAO:
        config:
          dir: testing/pkg/oidc/dao
  github.com/goharbor/harbor/src/pkg/rbac:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/rbac
  github.com/goharbor/harbor/src/pkg/rbac/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/rbac/dao
  github.com/goharbor/harbor/src/pkg/robot:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/robot
  github.com/goharbor/harbor/src/pkg/robot/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/robot/dao
  github.com/goharbor/harbor/src/pkg/repository:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/repository
  github.com/goharbor/harbor/src/pkg/repository/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/repository/dao
  github.com/goharbor/harbor/src/pkg/notification/policy:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/notification/policy
  github.com/goharbor/harbor/src/pkg/notification/policy/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/notification/policy/dao
  github.com/goharbor/harbor/src/pkg/immutable/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/immutable/dao
  github.com/goharbor/harbor/src/pkg/immutable/match:
    interfaces:
      ImmutableTagMatcher:
        config:
          dir: testing/pkg/immutable
          filename: matcher.go
          outpkg: immutable
          mockname: FakeMatcher
  github.com/goharbor/harbor/src/pkg/ldap:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/ldap
  github.com/goharbor/harbor/src/pkg/allowlist:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/allowlist
  github.com/goharbor/harbor/src/pkg/allowlist/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/allowlist/dao
  github.com/goharbor/harbor/src/pkg/reg:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/reg
  github.com/goharbor/harbor/src/pkg/reg/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/reg/dao
  github.com/goharbor/harbor/src/pkg/reg/adapter:
    interfaces:
      Factory:
        config:
          dir: controller/replication/flow
          outpkg: flow
          mockname: mockFactory
          filename: mock_adapter_factory_test.go
      Adapter:
        config:
          dir: testing/pkg/reg/adapter
  github.com/goharbor/harbor/src/pkg/replication:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/replication
  github.com/goharbor/harbor/src/pkg/replication/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/replication/dao
  github.com/goharbor/harbor/src/pkg/label:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/label
  github.com/goharbor/harbor/src/pkg/label/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/label/dao
  github.com/goharbor/harbor/src/pkg/joblog:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/joblog
  github.com/goharbor/harbor/src/pkg/joblog/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/joblog/dao
  github.com/goharbor/harbor/src/pkg/accessory:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/accessory
  github.com/goharbor/harbor/src/pkg/accessory/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/accessory/dao
  github.com/goharbor/harbor/src/pkg/accessory/model:
    interfaces:
      Accessory:
        config:
          dir: testing/pkg/accessory/model
  github.com/goharbor/harbor/src/pkg/audit:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/audit
  github.com/goharbor/harbor/src/pkg/audit/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/audit/dao
  github.com/goharbor/harbor/src/pkg/systemartifact:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/systemartifact
      Selector:
        config:
          dir: testing/pkg/systemartifact/cleanup
          outpkg: cleanup
  github.com/goharbor/harbor/src/pkg/systemartifact/dao:
    interfaces:
      DAO:
        config:
          dir: testing/pkg/systemartifact/dao
  github.com/goharbor/harbor/src/pkg/cached/manifest/redis:
    interfaces:
      CachedManager:
        config:
          dir: testing/pkg/cached/manifest/redis
  github.com/goharbor/harbor/src/pkg/scan/export:
    interfaces:
      FilterProcessor:
        config:
          dir: testing/pkg/scan/export
      Manager:
        config:
          dir: testing/pkg/scan/export
      ArtifactDigestCalculator:
        config:
          dir: testing/pkg/scan/export
  github.com/goharbor/harbor/src/pkg/scan/sbom:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/scan/sbom
  github.com/goharbor/harbor/src/pkg/registry:
    interfaces:
      Client:
        config:
          dir: testing/pkg/registry
          filename: fake_registry_client.go
  github.com/goharbor/harbor/src/pkg/member:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/member
          filename: fake_member_manager.go
  github.com/goharbor/harbor/src/pkg/usergroup:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/usergroup
          filename: fake_usergroup_manager.go
  github.com/goharbor/harbor/src/pkg/jobmonitor:
    config:
      dir: testing/pkg/jobmonitor
    interfaces:
      PoolManager:
      JobServiceMonitorClient:
      WorkerManager:
      QueueManager:
      RedisClient:
  github.com/goharbor/harbor/src/pkg/queuestatus:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/queuestatus
  github.com/goharbor/harbor/src/pkg/securityhub:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/securityhub
  github.com/goharbor/harbor/src/pkg/tag:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/tag
  github.com/goharbor/harbor/src/pkg/p2p/preheat/policy:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/p2p/preheat/policy
  github.com/goharbor/harbor/src/pkg/p2p/preheat/instance:
    interfaces:
      Manager:
        config:
          dir: testing/pkg/p2p/preheat/instance
  github.com/goharbor/harbor/src/pkg/chart:
    interfaces:
      Operator:
        config:
          dir: testing/pkg/chart
  # registryctl related mocks
  github.com/goharbor/harbor/src/registryctl/client:
    interfaces:
      Client:
        config:
          dir: testing/registryctl
          outpkg: registryctl
  # remote interfaces
  github.com/docker/distribution:
    interfaces:
      Manifest:
        config:
          dir: testing/pkg/distribution
