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