Files
sure/test/models/snaptrade_item_test.rb
Juan José Mata b3f70c8951 feat:Add SnapTrade OAuth device flow (#2523)
* 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
2026-06-29 00:30:03 +02:00

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