mirror of
https://github.com/we-promise/sure.git
synced 2026-07-16 23:05:22 +00:00
* Add SnapTrade OAuth connection flow * Restore SnapTrade brokerage portal links * Guard SnapTrade OAuth setup completion * Move SnapTrade OAuth start to POST * Use one SnapTrade item in provider panel * Fix SnapTrade OAuth controller tests * Fix SnapTrade OAuth drawer completion redirect * Update SnapTrade limits message. * Restrict SnapTrade OAuth scopes
122 lines
3.5 KiB
Ruby
122 lines
3.5 KiB
Ruby
require "test_helper"
|
|
|
|
class SnaptradeItemTest < ActiveSupport::TestCase
|
|
setup do
|
|
@family = families(:dylan_family)
|
|
end
|
|
|
|
test "validates presence of name" do
|
|
item = SnaptradeItem.new(family: @family, client_id: "test", consumer_key: "test")
|
|
assert_not item.valid?
|
|
assert_includes item.errors[:name], "can't be blank"
|
|
end
|
|
|
|
test "requires client_id when consumer_key is present" do
|
|
item = SnaptradeItem.new(family: @family, name: "Test", consumer_key: "test")
|
|
assert_not item.valid?
|
|
assert_includes item.errors[:client_id], "can't be blank"
|
|
end
|
|
|
|
test "requires consumer_key when client_id is present" do
|
|
item = SnaptradeItem.new(family: @family, name: "Test", client_id: "test")
|
|
assert_not item.valid?
|
|
assert_includes item.errors[:consumer_key], "can't be blank"
|
|
end
|
|
|
|
test "allows oauth-only items without api credentials" do
|
|
item = SnaptradeItem.new(family: @family, name: "Test")
|
|
assert item.valid?
|
|
end
|
|
|
|
test "credentials_configured? returns true when credentials are set" do
|
|
item = SnaptradeItem.new(
|
|
family: @family,
|
|
name: "Test",
|
|
client_id: "test_client_id",
|
|
consumer_key: "test_consumer_key"
|
|
)
|
|
assert item.credentials_configured?
|
|
end
|
|
|
|
test "credentials_configured? returns false when credentials are missing" do
|
|
item = SnaptradeItem.new(family: @family, name: "Test")
|
|
assert_not item.credentials_configured?
|
|
end
|
|
|
|
test "user_registered? returns false when user_id and secret are blank" do
|
|
item = SnaptradeItem.new(
|
|
family: @family,
|
|
name: "Test",
|
|
client_id: "test",
|
|
consumer_key: "test"
|
|
)
|
|
assert_not item.user_registered?
|
|
end
|
|
|
|
test "user_registered? returns true when user_id and secret are present" do
|
|
item = SnaptradeItem.new(
|
|
family: @family,
|
|
name: "Test",
|
|
client_id: "test",
|
|
consumer_key: "test",
|
|
snaptrade_user_id: "user_123",
|
|
snaptrade_user_secret: "secret_abc"
|
|
)
|
|
assert item.user_registered?
|
|
end
|
|
|
|
test "snaptrade_provider returns nil when credentials not configured" do
|
|
item = SnaptradeItem.new(family: @family, name: "Test")
|
|
assert_nil item.snaptrade_provider
|
|
end
|
|
|
|
test "snaptrade_provider returns provider instance when configured" do
|
|
item = SnaptradeItem.new(
|
|
family: @family,
|
|
name: "Test",
|
|
client_id: "test_client_id",
|
|
consumer_key: "test_consumer_key"
|
|
)
|
|
provider = item.snaptrade_provider
|
|
assert_instance_of Provider::Snaptrade, provider
|
|
end
|
|
|
|
test "orphaned_users only includes users for the same family" do
|
|
item = SnaptradeItem.new(
|
|
family: @family,
|
|
name: "Test",
|
|
client_id: "test",
|
|
consumer_key: "test",
|
|
snaptrade_user_id: "family_#{@family.id}_111",
|
|
snaptrade_user_secret: "secret"
|
|
)
|
|
|
|
item.stubs(:list_all_users).returns([
|
|
"family_#{@family.id}_111",
|
|
"family_#{@family.id}_222",
|
|
"family_999_333",
|
|
"legacy_user_444"
|
|
])
|
|
|
|
assert_equal([ "family_#{@family.id}_222" ], item.orphaned_users)
|
|
end
|
|
|
|
test "delete_orphaned_user rejects users outside the current family namespace" do
|
|
item = SnaptradeItem.new(
|
|
family: @family,
|
|
name: "Test",
|
|
client_id: "test",
|
|
consumer_key: "test",
|
|
snaptrade_user_id: "family_#{@family.id}_111",
|
|
snaptrade_user_secret: "secret"
|
|
)
|
|
|
|
provider = mock
|
|
provider.expects(:delete_user).never
|
|
item.stubs(:snaptrade_provider).returns(provider)
|
|
|
|
assert_not item.delete_orphaned_user("family_999_222")
|
|
assert_not item.delete_orphaned_user("legacy_user_333")
|
|
end
|
|
end
|