defmodule SimpleshopTheme.Stripe.SetupTest do use SimpleshopTheme.DataCase, async: false alias SimpleshopTheme.Settings alias SimpleshopTheme.Stripe.Setup describe "localhost?/0" do test "returns true for localhost endpoint" do # In test env, endpoint URL is localhost assert Setup.localhost?() end end describe "webhook_url/0" do test "returns the webhook endpoint URL" do url = Setup.webhook_url() assert url =~ "/webhooks/stripe" end end describe "save_signing_secret/1" do test "stores signing secret and loads into Application env" do Setup.save_signing_secret("whsec_test_secret_123") assert Settings.get_secret("stripe_signing_secret") == "whsec_test_secret_123" assert Application.get_env(:stripity_stripe, :signing_secret) == "whsec_test_secret_123" end end describe "disconnect/0" do test "removes all Stripe settings from DB and Application env" do # Set up some Stripe config Settings.put_secret("stripe_api_key", "sk_test_123") Settings.put_secret("stripe_signing_secret", "whsec_test_456") Settings.put_setting("stripe_webhook_endpoint_id", "we_test_789") Application.put_env(:stripity_stripe, :api_key, "sk_test_123") Application.put_env(:stripity_stripe, :signing_secret, "whsec_test_456") assert :ok = Setup.disconnect() # DB cleared refute Settings.has_secret?("stripe_api_key") refute Settings.has_secret?("stripe_signing_secret") assert Settings.get_setting("stripe_webhook_endpoint_id") == nil # Application env cleared assert Application.get_env(:stripity_stripe, :api_key) == nil assert Application.get_env(:stripity_stripe, :signing_secret) == nil end test "handles disconnect when nothing is configured" do assert :ok = Setup.disconnect() end end end