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:
parent
8c10e87387
commit
5da4bb6dc3
40 changed files with 1041 additions and 233 deletions
45
test/models/provider/stripe_test.rb
Normal file
45
test/models/provider/stripe_test.rb
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue