From 4f5e07201607534c7db78b9813dd30ac609f9f63 Mon Sep 17 00:00:00 2001 From: Vladimir Nadvornik Date: Thu, 10 Aug 2023 14:25:25 +0200 Subject: [PATCH] Improve unit tests for org channel accessibility --- .../channel/test/ChannelFactoryTest.java | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFactoryTest.java b/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFactoryTest.java index 4bcccdb2dae7..99cedb0755fc 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFactoryTest.java +++ b/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFactoryTest.java @@ -30,11 +30,13 @@ import com.redhat.rhn.domain.channel.ContentSource; import com.redhat.rhn.domain.channel.ContentSourceType; import com.redhat.rhn.domain.channel.ProductName; +import com.redhat.rhn.domain.channel.test.ChannelFamilyFactoryTest; import com.redhat.rhn.domain.common.ChecksumType; import com.redhat.rhn.domain.kickstart.KickstartInstallType; import com.redhat.rhn.domain.kickstart.test.KickstartDataTest; import com.redhat.rhn.domain.kickstart.test.KickstartableTreeTest; import com.redhat.rhn.domain.org.Org; +import com.redhat.rhn.domain.org.OrgFactory; import com.redhat.rhn.domain.rhnpackage.Package; import com.redhat.rhn.domain.rhnpackage.test.PackageTest; import com.redhat.rhn.domain.user.User; @@ -50,6 +52,7 @@ import org.junit.jupiter.api.Test; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -545,6 +548,119 @@ public void testAccessibility() throws Exception { assertFalse(ChannelFactory.isAccessibleByUser(c.getLabel(), user3.getId())); } + /** + * Test org channel accessibility + * + * @throws Exception if anything goes wrong + */ + @Test + public void testOrgAccessibility() throws Exception { + User user1 = UserTestUtils.findNewUser("testuser1", "testorg1"); + User user2 = UserTestUtils.findNewUser("testuser2", "testorg2"); + User user3 = UserTestUtils.findNewUser("testuser3", "testorg3"); + User user4 = UserTestUtils.findNewUser("testuser4", "testorg4"); + Org org1 = user1.getOrg(); + Org org2 = user2.getOrg(); + Org org3 = user3.getOrg(); + Org org4 = user4.getOrg(); + + + Channel c1 = ChannelFactoryTest.createTestChannel(user1); + Channel c2 = ChannelFactoryTest.createTestChannel(user2); + + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org1.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org2.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org4.getId())); + + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org1.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org2.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org4.getId())); + + ChannelFamily privcfam = ChannelFamilyFactoryTest.createTestChannelFamily(user3, false); + ChannelFamily pubcfam = ChannelFamilyFactoryTest.createTestChannelFamily(user4, true); + + c1.setChannelFamily(privcfam); + TestUtils.saveAndFlush(c1); + + c2.setChannelFamily(pubcfam); + TestUtils.saveAndFlush(c2); + + // c1 belongs to user3 org now + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org1.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org2.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org4.getId())); + + // c2 is public now + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org1.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org2.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org3.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org4.getId())); + } + + /** + * Test trusted org channel accessibility + * + * @throws Exception if anything goes wrong + */ + @Test + public void testTrustedOrgAccessibility() throws Exception { + User user1 = UserTestUtils.findNewUser("testuser1", "testorg1"); + User user2 = UserTestUtils.findNewUser("testuser2", "testorg2"); + User user3 = UserTestUtils.findNewUser("testuser3", "testorg3"); + User user4 = UserTestUtils.findNewUser("testuser4", "testorg4"); + Org org1 = user1.getOrg(); + Org org2 = user2.getOrg(); + Org org3 = user3.getOrg(); + Org org4 = user4.getOrg(); + + Channel c1 = ChannelFactoryTest.createTestChannel(user1); + Channel c2 = ChannelFactoryTest.createTestChannel(user2); + + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org1.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org2.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org4.getId())); + + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org1.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org2.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org4.getId())); + + // trusted org added to org + org1.getTrustedOrgs().add(org3); + c1.setAccess(Channel.PUBLIC); + flushAndEvict(org1); + flushAndEvict(c1); + + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org1.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org2.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org4.getId())); + + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org1.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org2.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org4.getId())); + + // trusted org added to channel + c2.getTrustedOrgs().add(org4); + c2.setAccess(Channel.PROTECTED); + flushAndEvict(c2); + + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org1.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org2.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c1.getLabel(), org3.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c1.getLabel(), org4.getId())); + + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org1.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org2.getId())); + assertFalse(ChannelFactory.isAccessibleBy(c2.getLabel(), org3.getId())); + assertTrue(ChannelFactory.isAccessibleBy(c2.getLabel(), org4.getId())); + } + /** * Test "ChannelFactory.findAllByUserOrderByChild" * @throws Exception