# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0

pkgname: mocks
structname: "{{.InterfaceName}}"
filename: "{{snakecase .InterfaceName}}.go"
dir: "{{.InterfaceDirRelative}}/mocks"
template-data:
  boilerplate-file: ./tools/config/boilerplate.txt
force-file-write: true
include-auto-generated: true

packages:
  github.com/absmach/supermq/api/grpc/clients/v1:
    interfaces:
      ClientsServiceClient:
        config:
          dir: "./clients/mocks"
          structname: "ClientsServiceClient"
          filename: "clients_client.go"
  github.com/absmach/supermq/api/grpc/domains/v1:
    interfaces:
      DomainsServiceClient:
        config:
          dir: "./domains/mocks"
          structname: "DomainsServiceClient"
          filename: "domains_client.go"
  github.com/absmach/supermq/api/grpc/token/v1:
    interfaces:
      TokenServiceClient:
        config:
          dir: "./auth/mocks"
          structname: "TokenServiceClient"
          filename: "token_client.go"
  github.com/absmach/supermq/api/grpc/channels/v1:
    interfaces:
      ChannelsServiceClient:
        config:
          dir: "./channels/mocks"
          structname: "ChannelsServiceClient"
          filename: "channels_client.go"
  github.com/absmach/supermq/api/grpc/groups/v1:
    interfaces:
      GroupsServiceClient:
        config:
          dir: "./groups/mocks"
          structname: "GroupsServiceClient"
          filename: "groups_client.go"
  github.com/absmach/supermq/pkg/sdk:
    interfaces:
      SDK:
        config:
          dir: "./pkg/sdk/mocks"
          structname: "SDK"
          filename: "sdk.go"
  github.com/absmach/supermq/auth:
    interfaces:
      Authz:
      Cache:
      Hasher:
      KeyRepository:
      UserActiveTokensCache:
      Tokenizer:
      PATS:
      PATSRepository:
      Service:
  github.com/absmach/supermq/channels:
    interfaces:
      Cache:
      Repository:
      Service:
  github.com/absmach/supermq/channels/private:
    interfaces:
      Service:
  github.com/absmach/supermq/clients:
    interfaces:
      Repository:
      Cache:
      Service:
  github.com/absmach/supermq/clients/private:
    interfaces:
      Service:
  github.com/absmach/supermq/consumers:
    interfaces:
      Notifier:
  github.com/absmach/supermq/domains:
    interfaces:
      Repository:
      Cache:
      Service:
  github.com/absmach/supermq/domains/private:
    interfaces:
      Service:
  github.com/absmach/supermq/groups:
    interfaces:
      Repository:
      Service:
  github.com/absmach/supermq/groups/private:
    interfaces:
      Service:
  github.com/absmach/supermq/http:
    interfaces:
      Service:
  github.com/absmach/supermq/journal:
    interfaces:
      Repository:
      Service:
  github.com/absmach/supermq/pkg/authn:
    interfaces:
      Authentication:
      AuthNMiddleware:
  github.com/absmach/supermq/pkg/authz:
    interfaces:
      Authorization:
  github.com/absmach/supermq/pkg/events:
    interfaces:
      Publisher:
      Subscriber:
  github.com/absmach/supermq/pkg/messaging:
    interfaces:
      PubSub:
  github.com/absmach/supermq/pkg/oauth2:
    interfaces:
      Provider:
  github.com/absmach/supermq/pkg/policies:
    interfaces:
      Evaluator:
      Service:
  github.com/absmach/supermq/pkg/roles:
    interfaces:
      Provisioner:
      RoleManager:
      Repository:
  github.com/absmach/supermq/pkg/callout:
    interfaces:
      Callout:
  github.com/absmach/supermq/readers:
    interfaces:
      MessageRepository:
  github.com/absmach/supermq/users:
    interfaces:
      Emailer:
      Hasher:
      Repository:
      Service:
  github.com/absmach/supermq/notifications:
    interfaces:
      Notifier:
