1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-24 15:49:39 +02:00

Subscription tests and domain (#2209)

* Save work

* Subscriptions and trials domain

* Store family ID on customer

* Remove indirection of stripe calls

* Test simplifications

* Update brakeman

* Fix stripe tests in CI

* Update billing page to show subscription details

* Remove legacy columns

* Complete billing settings page

* Fix hardcoded plan name

* Handle subscriptions for self hosting mode

* Lint fixes
This commit is contained in:
Zach Gollwitzer 2025-05-06 14:05:21 -04:00 committed by GitHub
parent 8c10e87387
commit 5da4bb6dc3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
40 changed files with 1041 additions and 233 deletions

View file

@ -0,0 +1,45 @@
require "test_helper"
class Provider::StripeTest < ActiveSupport::TestCase
setup do
@stripe = Provider::Stripe.new(
secret_key: ENV["STRIPE_SECRET_KEY"] || "foo",
webhook_secret: ENV["STRIPE_WEBHOOK_SECRET"] || "bar"
)
end
test "creates checkout session" do
test_email = "test@example.com"
test_success_url = "http://localhost:3000/subscription/success?session_id={CHECKOUT_SESSION_ID}"
test_cancel_url = "http://localhost:3000/subscription/upgrade"
VCR.use_cassette("stripe/create_checkout_session") do
session = @stripe.create_checkout_session(
plan: "monthly",
family_id: 1,
family_email: test_email,
success_url: test_success_url,
cancel_url: test_cancel_url
)
assert_match /https:\/\/checkout.stripe.com\/c\/pay\/cs_test_.*/, session.url
assert_match /cus_.*/, session.customer_id
end
end
# To re-run VCR for this test:
# 1. Complete a checkout session locally in the UI
# 2. Find the session ID, replace below
# 3. Re-run VCR, make sure ENV vars are in test environment
test "validates checkout session and returns subscription ID" do
test_session_id = "cs_test_b1RD8r6DAkSA8vrQ3grBC2QVgR5zUJ7QQFuVHZkcKoSYaEOQgCMPMOCOM5" # must exist in test Dashboard
VCR.use_cassette("stripe/checkout_session") do
result = @stripe.get_checkout_result(test_session_id)
assert result.success?
assert_match /sub_.*/, result.subscription_id
end
end
end