1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-23 07:09:39 +02:00
Maybe/app/models/provider/plaid_sandbox.rb
Josh Pigford a76cc2dff8
Some checks failed
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
Configure PlaidSandbox to use sandbox environment regardless of Rails config and set test environment variables for Plaid. Temporarily disable AutoSync functionality in tests.
2025-06-01 06:37:46 -05:00

52 lines
1.4 KiB
Ruby

class Provider::PlaidSandbox < Provider::Plaid
attr_reader :client
def initialize
@client = create_client
@region = :us
end
def create_public_token(username: nil)
client.sandbox_public_token_create(
Plaid::SandboxPublicTokenCreateRequest.new(
institution_id: "ins_109508", # "First Platypus Bank" (Plaid's sandbox institution that works with all products)
initial_products: [ "transactions", "investments", "liabilities" ],
options: {
override_username: username || "custom_test"
}
)
).public_token
end
def fire_webhook(item, type: "TRANSACTIONS", code: "SYNC_UPDATES_AVAILABLE")
client.sandbox_item_fire_webhook(
Plaid::SandboxItemFireWebhookRequest.new(
access_token: item.access_token,
webhook_type: type,
webhook_code: code,
)
)
end
def reset_login(item)
client.sandbox_item_reset_login(
Plaid::SandboxItemResetLoginRequest.new(
access_token: item.access_token
)
)
end
private
def create_client
raise "Plaid sandbox is not supported in production" if Rails.env.production?
api_client = Plaid::ApiClient.new(
Rails.application.config.plaid
)
# Force sandbox environment for PlaidSandbox regardless of Rails config
api_client.config.server_index = Plaid::Configuration::Environment["sandbox"]
Plaid::PlaidApi.new(api_client)
end
end