blob: f3a79a803cae5690dc7b93b2ed55ce3099b5a631 [file] [log] [blame]
Michael Hanle56bb892016-05-25 17:34:41 +02001package de.ids_mannheim.korap.security;
2
margarethaf68daa62017-09-21 02:11:24 +02003import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertNotNull;
6
7import java.util.Set;
margaretha50b331e2017-04-25 18:05:16 +02008
9import org.hamcrest.core.StringStartsWith;
Michael Hanle56bb892016-05-25 17:34:41 +020010import org.joda.time.DateTime;
Michael Hanle56bb892016-05-25 17:34:41 +020011import org.junit.Ignore;
margaretha50b331e2017-04-25 18:05:16 +020012import org.junit.Rule;
Michael Hanle56bb892016-05-25 17:34:41 +020013import org.junit.Test;
margaretha50b331e2017-04-25 18:05:16 +020014import org.junit.rules.ExpectedException;
Michael Hanle56bb892016-05-25 17:34:41 +020015
margarethaf68daa62017-09-21 02:11:24 +020016import de.ids_mannheim.korap.config.BeanConfigTest;
17import de.ids_mannheim.korap.config.ContextHolder;
18import de.ids_mannheim.korap.config.KustvaktConfiguration;
19import de.ids_mannheim.korap.exceptions.KustvaktException;
20import de.ids_mannheim.korap.interfaces.db.EntityHandlerIface;
21import de.ids_mannheim.korap.resources.Corpus;
22import de.ids_mannheim.korap.resources.Foundry;
23import de.ids_mannheim.korap.resources.KustvaktResource;
24import de.ids_mannheim.korap.resources.Permissions;
25import de.ids_mannheim.korap.resources.ResourceFactory;
26import de.ids_mannheim.korap.resources.VirtualCollection;
27import de.ids_mannheim.korap.security.ac.ResourceFinder;
28import de.ids_mannheim.korap.security.ac.ResourceHandler;
29import de.ids_mannheim.korap.security.ac.SecurityManager;
30import de.ids_mannheim.korap.user.User;
31import de.ids_mannheim.korap.utils.TimeUtils;
Michael Hanle56bb892016-05-25 17:34:41 +020032
33/**
margaretha50b331e2017-04-25 18:05:16 +020034 * @author hanl, margaretha
Michael Hanle56bb892016-05-25 17:34:41 +020035 * @date 20/11/2015
36 */
37// todo: run functions without data to check for nullpointers!
38public class ResourcesTest extends BeanConfigTest {
39
40 private static Corpus c1;
41
margaretha50b331e2017-04-25 18:05:16 +020042 @Rule
43 public ExpectedException exception = ExpectedException.none();
Michael Hanle56bb892016-05-25 17:34:41 +020044
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!
margaretha50b331e2017-04-25 18:05:16 +0200101 @Test
Michael Hanle56bb892016-05-25 17:34:41 +0200102 public void getResource () throws KustvaktException {
margaretha50b331e2017-04-25 18:05:16 +0200103
104 exception.expect(KustvaktException.class);
105 exception.expectMessage(StringStartsWith.startsWith("Permission denied"));
106
Michael Hanle56bb892016-05-25 17:34:41 +0200107 User user = User.UserFactory.getDemoUser();
108 SecurityManager m = SecurityManager.findbyId(2, user,
109 Permissions.Permission.READ);
110 m.getResource();
111 }
112
113
114 @Test
margarethae7badb32017-06-22 15:16:00 +0200115 @Deprecated
116 @Ignore
Michael Hanle56bb892016-05-25 17:34:41 +0200117 public void getDemoResources () throws KustvaktException {
118 Set s = ResourceFinder.searchPublic(Corpus.class);
119 assertEquals(2, s.size());
120 s = ResourceFinder.searchPublic(Foundry.class);
margaretha0f5a0e62017-03-21 15:33:11 +0100121 assertEquals(10, s.size());
Michael Hanle56bb892016-05-25 17:34:41 +0200122 }
123
124
125 @Test
margarethae7badb32017-06-22 15:16:00 +0200126 @Deprecated
127 @Ignore
Michael Hanle56bb892016-05-25 17:34:41 +0200128 public void getDemoResourceFiltered () throws KustvaktException {
margaretha61471cc2017-04-20 18:42:23 +0200129 Set s = ResourceFinder.searchPublicFiltered(Corpus.class, "WPD13");
Michael Hanle56bb892016-05-25 17:34:41 +0200130 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 Hanle56bb892016-05-25 17:34:41 +0200138 helper().setupResource(c1);
139 }
140}