mirror of
https://github.com/we-promise/sure.git
synced 2026-05-25 13:34:58 +00:00
* Scope SnapTrade orphan cleanup to current family Restrict orphaned user listing and deletion to SnapTrade user IDs that belong to the current family namespace. Add model tests to prevent cross-family enumeration/deletion regressions. * Update test/models/snaptrade_item_test.rb Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Juan José Mata <jjmata@jjmata.com> * test: fix snaptrade orphaned users assertion * style: fix snaptrade test array spacing --------- Signed-off-by: Juan José Mata <jjmata@jjmata.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: KiloClaw <kiloclaw@openclaw.ai>
117 lines
3.4 KiB
Ruby
117 lines
3.4 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 "validates presence of client_id on create" 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 "validates presence of consumer_key on create" 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 "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
|