From 5526f2602d8ecc956f06bc650035c1c211ddf5cf Mon Sep 17 00:00:00 2001 From: Justin Sherrill Date: Fri, 14 Oct 2016 09:21:41 -0400 Subject: [PATCH] Fixes #16931 - better handle improperly indexed pools --- app/models/katello/activation_key.rb | 6 +++++- test/models/activation_key_test.rb | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/models/katello/activation_key.rb b/app/models/katello/activation_key.rb index 520ee089622..734b0ab0379 100644 --- a/app/models/katello/activation_key.rb +++ b/app/models/katello/activation_key.rb @@ -98,7 +98,11 @@ def products if cp_pools pools = cp_pools.collect { |cp_pool| Pool.find_by(:cp_id => cp_pool['id']) } pools.each do |pool| - all_products << pool.subscription.products + if pool.subscription + all_products << pool.subscription.products + else + Rails.logger.error("Pool #{pool.id} is missing its subscription id.") + end end end all_products.flatten! diff --git a/test/models/activation_key_test.rb b/test/models/activation_key_test.rb index 5ce5772c690..a810100961e 100644 --- a/test/models/activation_key_test.rb +++ b/test/models/activation_key_test.rb @@ -126,6 +126,16 @@ def test_max_hosts_exceeded assert @dev_key.valid? end + def test_products + pool_one = katello_pools(:pool_one) + pool_one.subscription_id = nil + pool_one.save! + cp_pools = [{'id' => pool_one.cp_id}] + + @dev_key.stubs(:get_key_pools).returns(cp_pools) + assert_empty @dev_key.products + end + def test_available_subscriptions pool_one = katello_pools(:pool_one) pool_two = katello_pools(:pool_two)