import {
  SesIdentityProvider,
  SesIdentityResult,
  SesIdentityStatus,
  SesVerificationStatus,
} from "./ses-identity-provider";

export class InMemorySesIdentityProvider implements SesIdentityProvider {
  public statusByDomain = new Map<string, SesVerificationStatus>();
  public deletedDomains: string[] = [];

  async createIdentity(domain: string): Promise<SesIdentityResult> {
    this.statusByDomain.set(domain, "PENDING");
    return { dkimTokens: ["token1", "token2", "token3"] };
  }

  async putMailFromAttributes(): Promise<void> {}

  async getIdentity(domain: string): Promise<SesIdentityStatus> {
    return {
      verificationStatus: this.statusByDomain.get(domain) ?? "PENDING",
      dkimTokens: ["token1", "token2", "token3"],
    };
  }

  async deleteIdentity(domain: string): Promise<void> {
    this.deletedDomains.push(domain);
    this.statusByDomain.delete(domain);
  }
}
