Skip to content

Commit

Permalink
Improve unit tests for org channel accessibility
Browse files Browse the repository at this point in the history
  • Loading branch information
nadvornik committed Aug 10, 2023
1 parent fc80937 commit 4f5e072
Showing 1 changed file with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 4f5e072

Please sign in to comment.