source: trunk/test/unit/nl/tno/metagenomics/StudyTests.groovy @ 2

Last change on this file since 2 was 2, checked in by robert@…, 8 years ago

Initial import of basic functionality

File size: 4.5 KB
Line 
1package nl.tno.metagenomics
2
3import grails.test.*
4import nl.tno.metagenomics.auth.Auth
5import nl.tno.metagenomics.auth.User
6
7class StudyTests extends GrailsUnitTestCase {
8    protected void setUp() {
9        super.setUp()
10    }
11
12    protected void tearDown() {
13        super.tearDown()
14    }
15
16        void initializeUsersAndStudies() {
17                def user1 = new User( identifier: 3, username: "John" );
18                def user2 = new User( identifier: 6, username: "Mary" );
19                def user3 = new User( identifier: 4, username: "Michael" );
20                def study1 = new Study( name: "Test study", studyToken: "study1" )
21                def study2 = new Study( name: "Test study 2", studyToken: "study2" )
22                def study3 = new Study( name: "Test study 5", studyToken: "study3" )
23               
24                def entities = [user1, user2, user3, study1, study2, study3]
25                mockDomain( User )
26                mockDomain( Study )
27                mockDomain( User, [user1, user2, user3] )
28                mockDomain( Study, [study1, study2, study3] )
29               
30                entities.each { it.save() }
31               
32                assert( User.list().size() == 3 )
33                assert( Study.list().size() == 3 )
34
35        }
36       
37        void testCanRead() {
38                initializeUsersAndStudies()
39               
40                def user1 = User.findByUsername( "John" );
41                def user2 = User.findByUsername( "Mary" );
42                def user3 = User.findByUsername( "Michael" );
43                def study1 = Study.findByStudyToken( "study1" )
44                def study2 = Study.findByStudyToken( "study2" )
45                def study3 = Study.findByStudyToken( "study3" )
46               
47                def a1 = new Auth( canRead: true );
48                def a2 = new Auth( canRead: true );
49                def a3 = new Auth( canRead: true );
50                def a4 = new Auth( canRead: false );
51                def a5 = new Auth(); // Test default
52               
53                mockDomain( Auth, [a1, a2, a3, a4, a5] )
54               
55                user1.addToAuth( a1 );
56                study1.addToAuth( a1 );
57                a1.save()
58               
59                assert study1.canRead(user1)
60                         
61                user1.addToAuth( a2 );
62                study2.addToAuth( a2 );
63                a2.save()
64
65                assert study2.canRead(user1)
66               
67                user2.addToAuth( a3 );
68                study2.addToAuth( a3 );
69                a3.save()
70
71                assert study2.canRead(user2)
72                assertFalse study1.canRead(user2)
73               
74                assertFalse study3.canRead(user3)
75                assertFalse study3.canRead(user1)
76               
77                user3.addToAuth( a4 )
78                study2.addToAuth( a4 );
79               
80                assertFalse study2.canRead( user3 )
81               
82                user1.addToAuth( a5 )
83                study3.addToAuth( a5 );
84               
85                assertFalse study3.canRead( user1 )
86        }
87       
88        void testCanWrite() {
89                initializeUsersAndStudies()
90               
91                def user1 = User.findByUsername( "John" );
92                def user2 = User.findByUsername( "Mary" );
93                def user3 = User.findByUsername( "Michael" );
94                def study1 = Study.findByStudyToken( "study1" )
95                def study2 = Study.findByStudyToken( "study2" )
96                def study3 = Study.findByStudyToken( "study3" )
97               
98                def a1 = new Auth( canWrite: true );
99                def a2 = new Auth( canWrite: true );
100                def a3 = new Auth( canWrite: true );
101                def a4 = new Auth( canWrite: false );
102                def a5 = new Auth(); // Test default
103               
104                mockDomain( Auth, [a1, a2, a3, a4, a5] )
105                user1.addToAuth( a1 );
106                study1.addToAuth( a1 );
107                a1.save()
108               
109                assert study1.canWrite(user1)
110                         
111                user1.addToAuth( a2 );
112                study2.addToAuth( a2 );
113                a2.save()
114
115                assert study2.canWrite(user1)
116               
117                user2.addToAuth( a3 );
118                study2.addToAuth( a3 );
119                a3.save()
120
121                assert study2.canWrite(user2)
122                assertFalse study1.canWrite(user2)
123               
124                assertFalse study3.canWrite(user3)
125                assertFalse study3.canWrite(user1)
126               
127                user3.addToAuth( a4 )
128                study2.addToAuth( a4 );
129               
130                assertFalse study2.canWrite( user3 )
131               
132                user1.addToAuth( a5 )
133                study3.addToAuth( a5 );
134               
135                assertFalse study3.canWrite( user1 )
136        }
137       
138        void testIsOwner() {
139                initializeUsersAndStudies()
140               
141                def user1 = User.findByUsername( "John" );
142                def user2 = User.findByUsername( "Mary" );
143                def user3 = User.findByUsername( "Michael" );
144                def study1 = Study.findByStudyToken( "study1" )
145                def study2 = Study.findByStudyToken( "study2" )
146                def study3 = Study.findByStudyToken( "study3" )
147               
148                def a1 = new Auth( isOwner: true );
149                def a2 = new Auth( isOwner: true );
150                def a3 = new Auth( isOwner: true );
151                def a4 = new Auth( isOwner: false );
152                def a5 = new Auth(); // Test default
153               
154                mockDomain( Auth, [a1, a2, a3, a4, a5] )
155                user1.addToAuth( a1 );
156                study1.addToAuth( a1 );
157                a1.save()
158               
159                assert study1.isOwner(user1)
160                         
161                user1.addToAuth( a2 );
162                study2.addToAuth( a2 );
163                a2.save()
164
165                assert study2.isOwner(user1)
166               
167                user2.addToAuth( a3 );
168                study2.addToAuth( a3 );
169                a3.save()
170
171                assert study2.isOwner(user2)
172                assertFalse study1.isOwner(user2)
173               
174                assertFalse study3.isOwner(user3)
175                assertFalse study3.isOwner(user1)
176               
177                user3.addToAuth( a4 )
178                study2.addToAuth( a4 );
179               
180                assertFalse study2.isOwner( user3 )
181               
182                user1.addToAuth( a5 )
183                study3.addToAuth( a5 );
184               
185                assertFalse study3.isOwner( user1 )
186        }
187       
188       
189}
Note: See TracBrowser for help on using the repository browser.