- Created a CI workflow in `.github/workflows/ci.yml` to run Go tests and verify database migrations. - Added unit tests for the mail API in `internal/api/mail/handlers_test.go`, covering message listing, retrieval, sending, and label updating. - Introduced a service interface for the mail handler in `internal/api/mail/service_iface.go`. - Updated mail handler initialization to accept a service API in `internal/api/mail/handlers.go`. - Implemented test authentication middleware for testing purposes in `internal/api/middleware/testauth.go`. - Added various test cases for IMAP and SMTP functionalities, ensuring robust error handling and validation. - Enhanced project documentation with checklist updates for testing and CI integration.
33 lines
1.9 KiB
Go
33 lines
1.9 KiB
Go
package mail
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/ultisuite/ulti-backend/internal/api/query"
|
|
)
|
|
|
|
// ServiceAPI is the mail handler service boundary. *Service implements it in production.
|
|
type ServiceAPI interface {
|
|
ResolveUserID(ctx context.Context, externalID string) (string, error)
|
|
ListAccounts(ctx context.Context, externalID string, params query.ListParams) (AccountsList, error)
|
|
CreateAccount(ctx context.Context, externalID string, req *createAccountRequest) (string, error)
|
|
GetAccount(ctx context.Context, externalID, accountID string) (map[string]any, error)
|
|
DeleteAccount(ctx context.Context, externalID, accountID string) error
|
|
ListMessages(ctx context.Context, externalID string, filter MessageListFilter, params query.ListParams) (MessagesList, error)
|
|
GetMessage(ctx context.Context, externalID, messageID string) (map[string]any, error)
|
|
UpdateLabels(ctx context.Context, userID, messageID string, labels []string) error
|
|
UpdateFlags(ctx context.Context, userID, messageID string, flags []string) error
|
|
DeleteMessage(ctx context.Context, externalID, userID, messageID string) error
|
|
GetThread(ctx context.Context, externalID, threadID string) (map[string]any, error)
|
|
SendMessage(ctx context.Context, userID string, req *sendMessageRequest) (id, status string, err error)
|
|
ListRules(ctx context.Context, externalID string, params query.ListParams) (RulesList, error)
|
|
CreateRule(ctx context.Context, userID string, req *createRuleRequest) (string, error)
|
|
UpdateRule(ctx context.Context, userID, ruleID string, req *updateRuleRequest) error
|
|
DeleteRule(ctx context.Context, externalID, userID, ruleID string) error
|
|
ListWebhooks(ctx context.Context, externalID string, params query.ListParams) (WebhooksList, error)
|
|
CreateWebhook(ctx context.Context, externalID string, req *createWebhookRequest, method string) (string, error)
|
|
DeleteWebhook(ctx context.Context, externalID, userID, webhookID string) error
|
|
}
|
|
|
|
var _ ServiceAPI = (*Service)(nil)
|