@Test public void refreshPoolsCleanupPoolThatLostVirtLimit() { List<Subscription> subscriptions = Util.newList(); List<Pool> pools = Util.newList(); Subscription s = TestUtil.createSubscription(getOwner(), TestUtil.createProduct()); s.setId("01923"); subscriptions.add(s); Pool p = TestUtil.createPool(s.getProduct()); p.setSubscriptionId(s.getId()); p.setAttribute(PoolManager.DELETE_FLAG, "true"); pools.add(p); when(mockSubAdapter.getSubscriptions(any(Owner.class))).thenReturn(subscriptions); when(mockPoolCurator.listAvailableEntitlementPools( any(Consumer.class), any(Owner.class), anyString(), any(Date.class), anyBoolean(), anyBoolean())) .thenReturn(pools); List<PoolUpdate> updates = new LinkedList(); updates.add(new PoolUpdate(p, false, true, false)); when(poolRulesMock.updatePools(s, pools)).thenReturn(updates); this.manager.getRefresher().add(getOwner()).run(); verify(this.mockPoolCurator, times(1)).delete(any(Pool.class)); }
@Test public void refreshPoolsCreatingPoolsForExistingSubscriptions() { List<Subscription> subscriptions = Util.newList(); List<Pool> pools = Util.newList(); Subscription s = TestUtil.createSubscription(getOwner(), TestUtil.createProduct()); subscriptions.add(s); when(mockSubAdapter.getSubscriptions(any(Owner.class))).thenReturn(subscriptions); when(mockPoolCurator.listAvailableEntitlementPools( any(Consumer.class), any(Owner.class), anyString(), any(Date.class), anyBoolean(), anyBoolean())) .thenReturn(pools); List<Pool> newPools = new LinkedList<Pool>(); Pool p = TestUtil.createPool(s.getProduct()); p.setSubscriptionId(s.getId()); newPools.add(p); when(poolRulesMock.createPools(s)).thenReturn(newPools); this.manager.getRefresher().add(getOwner()).run(); verify(this.mockPoolCurator, times(1)).create(any(Pool.class)); }
@Test public void testRefreshPoolsRemovesExpiredSubscriptionsAlongWithItsPoolsAndEnts() { PreUnbindHelper preHelper = mock(PreUnbindHelper.class); Date expiredStart = TestUtil.createDate(2004, 5, 5); Date expiredDate = TestUtil.createDate(2005, 5, 5); List<Subscription> subscriptions = Util.newList(); Subscription sub = TestUtil.createSubscription(getOwner(), TestUtil.createProduct()); sub.setStartDate(expiredStart); sub.setEndDate(expiredDate); sub.setId("123"); subscriptions.add(sub); when(mockSubAdapter.getSubscriptions(any(Owner.class))).thenReturn(subscriptions); List<Pool> pools = Util.newList(); Pool p = TestUtil.createPool(sub.getOwner(), sub.getProduct()); p.setSubscriptionId(sub.getId()); p.setStartDate(expiredStart); p.setEndDate(expiredDate); p.setConsumed(1L); pools.add(p); when(mockPoolCurator.lockAndLoad(any(Pool.class))).thenReturn(p); when(mockPoolCurator.listAvailableEntitlementPools( any(Consumer.class), any(Owner.class), anyString(), any(Date.class), anyBoolean(), anyBoolean())) .thenReturn(pools); List<Entitlement> poolEntitlements = Util.newList(); Entitlement ent = TestUtil.createEntitlement(); ent.setPool(p); ent.setQuantity(1); poolEntitlements.add(ent); when(mockPoolCurator.entitlementsIn(eq(p))).thenReturn(poolEntitlements); ValidationResult result = new ValidationResult(); when(preHelper.getResult()).thenReturn(result); this.manager.getRefresher().add(sub.getOwner()).run(); verify(mockSubAdapter).deleteSubscription(eq(sub)); verify(mockPoolCurator).delete(eq(p)); // Verify the entitlement was removed. verify(entCertAdapterMock).revokeEntitlementCertificates(eq(ent)); verify(entitlementCurator).delete(eq(ent)); }
@Test public void testEntitleByProductsEmptyArray() throws Exception { Product product = TestUtil.createProduct(); List<Pool> pools = Util.newList(); Pool pool1 = TestUtil.createPool(product); pools.add(pool1); Date now = new Date(); ValidationResult result = mock(ValidationResult.class); // Setup an installed product for the consumer, we'll make the bind request // with no products specified, so this should get used instead: String[] installedPids = new String[] {product.getId()}; ComplianceStatus mockCompliance = new ComplianceStatus(now); mockCompliance.addNonCompliantProduct(installedPids[0]); when(complianceRules.getStatus(any(Consumer.class), any(Date.class))) .thenReturn(mockCompliance); when(mockPoolCurator.listAvailableEntitlementPools( any(Consumer.class), any(Owner.class), anyString(), eq(now), anyBoolean(), anyBoolean())) .thenReturn(pools); when(mockPoolCurator.lockAndLoad(any(Pool.class))).thenReturn(pool1); when(enforcerMock.preEntitlement(any(Consumer.class), any(Pool.class), anyInt())) .thenReturn(result); when(result.isSuccessful()).thenReturn(true); List<PoolQuantity> bestPools = new ArrayList<PoolQuantity>(); bestPools.add(new PoolQuantity(pool1, 1)); when(autobindRules.selectBestPools( any(Consumer.class), any(String[].class), any(List.class), any(ComplianceStatus.class), any(String.class), any(Set.class))) .thenReturn(bestPools); // Make the call but provide a null array of product IDs (simulates healing): manager.entitleByProducts(TestUtil.createConsumer(o), null, now); verify(autobindRules) .selectBestPools( any(Consumer.class), eq(installedPids), any(List.class), eq(mockCompliance), any(String.class), any(Set.class)); }
@Test public void testRefreshPoolsForDeactivatingPools() { List<Subscription> subscriptions = Util.newList(); List<Pool> pools = Util.newList(); Pool p = TestUtil.createPool(TestUtil.createProduct()); p.setSubscriptionId("112"); pools.add(p); when(mockSubAdapter.getSubscriptions(any(Owner.class))).thenReturn(subscriptions); when(mockPoolCurator.listAvailableEntitlementPools( any(Consumer.class), any(Owner.class), anyString(), any(Date.class), anyBoolean(), anyBoolean())) .thenReturn(pools); this.manager.getRefresher().add(getOwner()).run(); verify(this.manager).deletePool(same(p)); }
@SuppressWarnings("unchecked") @Test public void testEntitleWithADate() throws Exception { Product product = TestUtil.createProduct(); List<Pool> pools = Util.newList(); Pool pool1 = TestUtil.createPool(product); pools.add(pool1); Pool pool2 = TestUtil.createPool(product); pools.add(pool2); Date now = new Date(); ValidationResult result = mock(ValidationResult.class); when(mockPoolCurator.listAvailableEntitlementPools( any(Consumer.class), any(Owner.class), any(String.class), eq(now), anyBoolean(), anyBoolean())) .thenReturn(pools); when(mockPoolCurator.lockAndLoad(any(Pool.class))).thenReturn(pool1); when(enforcerMock.preEntitlement(any(Consumer.class), any(Pool.class), anyInt())) .thenReturn(result); when(result.isSuccessful()).thenReturn(true); List<PoolQuantity> bestPools = new ArrayList<PoolQuantity>(); bestPools.add(new PoolQuantity(pool1, 1)); when(autobindRules.selectBestPools( any(Consumer.class), any(String[].class), any(List.class), any(ComplianceStatus.class), any(String.class), any(Set.class))) .thenReturn(bestPools); List<Entitlement> e = manager.entitleByProducts(TestUtil.createConsumer(o), new String[] {product.getId()}, now); assertNotNull(e); assertEquals(e.size(), 1); }