package org.sakaiproject.authz.impl.test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.sakaiproject.authz.api.AuthzGroupService.APPLICATION_ID; import org.jmock.Expectations; import org.jmock.integration.junit4.JMock; import org.jmock.integration.junit4.JUnit4Mockery; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.sakaiproject.authz.impl.AuthzGroupServiceTest; import org.sakaiproject.authz.impl.BaseAuthzGroupService; import org.sakaiproject.entity.api.Reference; /** * This just checks that the parsing of entity references by the Authz service works. * @author Matthew Buckett * */ @RunWith(JMock.class) public class AuthzTestEntityParsing { public JUnit4Mockery context = new JUnit4Mockery(); private BaseAuthzGroupService authz; private Reference ref; @Before public void setUp() { authz = new AuthzGroupServiceTest(); ref = context.mock(Reference.class); } @Test public void testEmpty() { assertFalse(authz.parseEntityReference("", ref)); } @Test public void testLeadingSlash() { assertFalse(authz.parseEntityReference("/realm", ref)); } @Test public void testOtherEntity() { assertFalse(authz.parseEntityReference("/site/mercury", ref)); } @Test public void testNoId() { context.checking(new Expectations() {{ allowing(ref); }}); assertTrue(authz.parseEntityReference("/realm/", ref)); } @Test public void testSiteRealm() { context.checking(new Expectations(){{ oneOf(ref).set(APPLICATION_ID, null, "/site/mercury", null, null); }}); assertTrue(authz.parseEntityReference("/realm//site/mercury", ref)); } @Test public void testSpecialSite() { context.checking(new Expectations() {{ oneOf(ref).set(APPLICATION_ID, null, "!site.helper", null, null); }}); assertTrue(authz.parseEntityReference("/realm/!site.helper", ref)); } }