| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.security; |
| 2 | |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 3 | import static org.junit.Assert.assertEquals; |
| 4 | import static org.junit.Assert.assertFalse; |
| 5 | import static org.junit.Assert.assertNotNull; |
| 6 | |
| 7 | import java.util.Set; |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 8 | |
| 9 | import org.hamcrest.core.StringStartsWith; |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 10 | import org.joda.time.DateTime; |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 11 | import org.junit.Ignore; |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 12 | import org.junit.Rule; |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 13 | import org.junit.Test; |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 14 | import org.junit.rules.ExpectedException; |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 15 | |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 16 | import de.ids_mannheim.korap.config.BeanConfigTest; |
| 17 | import de.ids_mannheim.korap.config.ContextHolder; |
| 18 | import de.ids_mannheim.korap.config.KustvaktConfiguration; |
| 19 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| 20 | import de.ids_mannheim.korap.interfaces.db.EntityHandlerIface; |
| 21 | import de.ids_mannheim.korap.resources.Corpus; |
| 22 | import de.ids_mannheim.korap.resources.Foundry; |
| 23 | import de.ids_mannheim.korap.resources.KustvaktResource; |
| 24 | import de.ids_mannheim.korap.resources.Permissions; |
| 25 | import de.ids_mannheim.korap.resources.ResourceFactory; |
| 26 | import de.ids_mannheim.korap.resources.VirtualCollection; |
| 27 | import de.ids_mannheim.korap.security.ac.ResourceFinder; |
| 28 | import de.ids_mannheim.korap.security.ac.ResourceHandler; |
| 29 | import de.ids_mannheim.korap.security.ac.SecurityManager; |
| 30 | import de.ids_mannheim.korap.user.User; |
| 31 | import de.ids_mannheim.korap.utils.TimeUtils; |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 32 | |
| 33 | /** |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 34 | * @author hanl, margaretha |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 35 | * @date 20/11/2015 |
| 36 | */ |
| 37 | // todo: run functions without data to check for nullpointers! |
| 38 | public class ResourcesTest extends BeanConfigTest { |
| 39 | |
| 40 | private static Corpus c1; |
| 41 | |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 42 | @Rule |
| 43 | public ExpectedException exception = ExpectedException.none(); |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 44 | |
| 45 | @Test |
| 46 | public void testCreate () throws KustvaktException { |
| 47 | ResourceHandler h = new ResourceHandler(); |
| 48 | Corpus ncorps = new Corpus("new_wiki"); |
| 49 | h.storeResources(helper().getUser(), ncorps); |
| 50 | } |
| 51 | |
| 52 | |
| 53 | @Test |
| 54 | public void testGet () throws KustvaktException { |
| 55 | DateTime beg = new DateTime(); |
| 56 | ResourceHandler h = new ResourceHandler(); |
| 57 | Corpus c = h.findbyStrId(c1.getPersistentID(), helper().getUser(), |
| 58 | Corpus.class); |
| 59 | float end = TimeUtils.floating(beg, new DateTime()); |
| 60 | System.out.println("END ----------------- : " + end); |
| 61 | assertNotNull(c); |
| 62 | } |
| 63 | |
| 64 | |
| 65 | @Test(expected = KustvaktException.class) |
| 66 | public void testGetthrowsUnauthorizedException () throws KustvaktException { |
| 67 | DateTime beg = new DateTime(); |
| 68 | ResourceHandler h = new ResourceHandler(); |
| 69 | Corpus c = h.findbyStrId(c1.getPersistentID(), |
| 70 | User.UserFactory.getDemoUser(), Corpus.class); |
| 71 | float end = TimeUtils.floating(beg, new DateTime()); |
| 72 | System.out.println("END ----------------- : " + end); |
| 73 | assertNotNull(c); |
| 74 | } |
| 75 | |
| 76 | |
| 77 | // in case of null, should not return nullpointer! |
| 78 | @Test(expected = KustvaktException.class) |
| 79 | @Ignore |
| 80 | public void testCollectionGet () throws KustvaktException { |
| 81 | //todo: do use test user! |
| 82 | User user = User.UserFactory |
| 83 | .toUser(KustvaktConfiguration.KUSTVAKT_USER); |
| 84 | EntityHandlerIface ice = helper() |
| 85 | .getBean(ContextHolder.KUSTVAKT_USERDB); |
| 86 | User test = ice.getAccount(user.getUsername()); |
| 87 | assertNotNull(test); |
| 88 | Set<KustvaktResource> resources = ResourceFinder.search(user, |
| 89 | ResourceFactory.getResourceClass("collection")); |
| 90 | |
| 91 | assertFalse(resources.isEmpty()); |
| 92 | KustvaktResource r = (KustvaktResource) resources.toArray()[0]; |
| 93 | |
| 94 | assertNotNull(r); |
| 95 | ResourceHandler h = new ResourceHandler(); |
| 96 | h.findbyStrId(r.getPersistentID(), user, VirtualCollection.class); |
| 97 | } |
| 98 | |
| 99 | |
| 100 | // securitymanager does not allow for anonymous retrieval, only resourcefinder! |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 101 | @Test |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 102 | public void getResource () throws KustvaktException { |
| margaretha | 50b331e | 2017-04-25 18:05:16 +0200 | [diff] [blame] | 103 | |
| 104 | exception.expect(KustvaktException.class); |
| 105 | exception.expectMessage(StringStartsWith.startsWith("Permission denied")); |
| 106 | |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 107 | User user = User.UserFactory.getDemoUser(); |
| 108 | SecurityManager m = SecurityManager.findbyId(2, user, |
| 109 | Permissions.Permission.READ); |
| 110 | m.getResource(); |
| 111 | } |
| 112 | |
| 113 | |
| 114 | @Test |
| margaretha | e7badb3 | 2017-06-22 15:16:00 +0200 | [diff] [blame] | 115 | @Deprecated |
| 116 | @Ignore |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 117 | public void getDemoResources () throws KustvaktException { |
| 118 | Set s = ResourceFinder.searchPublic(Corpus.class); |
| 119 | assertEquals(2, s.size()); |
| 120 | s = ResourceFinder.searchPublic(Foundry.class); |
| margaretha | 0f5a0e6 | 2017-03-21 15:33:11 +0100 | [diff] [blame] | 121 | assertEquals(10, s.size()); |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 122 | } |
| 123 | |
| 124 | |
| 125 | @Test |
| margaretha | e7badb3 | 2017-06-22 15:16:00 +0200 | [diff] [blame] | 126 | @Deprecated |
| 127 | @Ignore |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 128 | public void getDemoResourceFiltered () throws KustvaktException { |
| margaretha | 61471cc | 2017-04-20 18:42:23 +0200 | [diff] [blame] | 129 | Set s = ResourceFinder.searchPublicFiltered(Corpus.class, "WPD13"); |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 130 | assertEquals(1, s.size()); |
| 131 | } |
| 132 | |
| 133 | |
| 134 | @Override |
| 135 | public void initMethod () throws KustvaktException { |
| 136 | helper().setupAccount(); |
| 137 | c1 = new Corpus("WPD_test"); |
| Michael Hanl | e56bb89 | 2016-05-25 17:34:41 +0200 | [diff] [blame] | 138 | helper().setupResource(c1); |
| 139 | } |
| 140 | } |