| |
109 |
109 |
oacs_dav::conn -set extra_url $name |
| |
110 |
110 |
oacs_dav::conn -set urlv [split $uri "/"] |
| |
111 |
111 |
oacs_dav::conn -set package_id $package_id |
| |
112 |
112 |
set parent_folder_id [db_string get_parent_folder "" -default "-100"] |
| |
113 |
113 |
oacs_dav::conn -set folder_id $parent_folder_id |
| |
114 |
114 |
oacs_dav::register_folder $parent_folder_id $sn(node_id) |
| |
115 |
115 |
foreach fname [split $name "/"] { |
| |
116 |
116 |
set uri "$uri${fname}/" |
| |
117 |
117 |
oacs_dav::conn -set item_name $fname |
| |
118 |
118 |
oacs_dav::conn -set uri $uri |
| |
119 |
119 |
oacs_dav::conn -set extra_url $fname |
| |
120 |
120 |
oacs_dav::conn -set urlv [split $uri "/"] |
| |
121 |
121 |
aa_log "name $fname uri $uri" |
| |
122 |
122 |
set response [oacs_dav::impl::content_folder::mkcol] |
| |
123 |
123 |
set new_folder_id [db_string folder_exists "" -default ""] |
| |
124 |
124 |
aa_true "Content Folder $fname created" {$new_folder_id ne ""} |
| |
125 |
125 |
} |
| |
126 |
126 |
} |
| |
127 |
127 |
} |
| |
128 |
128 |
|
| |
|
129 |
aa_register_case -procs { |
| |
|
130 |
oacs_dav::children_have_permission_p |
| |
|
131 |
} oacs_dav_children_have_permission_p { |
| |
|
132 |
Test the api that checks whether one has permissions on all |
| |
|
133 |
children. |
| |
|
134 |
} { |
| |
|
135 |
aa_run_with_teardown -rollback -test_code { |
| |
|
136 |
set user [acs::test::user::create] |
| |
|
137 |
set user_id [dict get $user user_id] |
| |
|
138 |
|
| |
|
139 |
set admin [acs::test::user::create -admin] |
| |
|
140 |
set admin_id [dict get $admin user_id] |
| |
|
141 |
|
| |
|
142 |
aa_section {Create a folder containing a cr_item with a few revisions} |
| |
|
143 |
|
| |
|
144 |
set root_folder_id [db_string get_root_folder { |
| |
|
145 |
select min(item_id) from cr_items |
| |
|
146 |
where content_type = 'content_folder' |
| |
|
147 |
and parent_id <= 0 |
| |
|
148 |
}] |
| |
|
149 |
|
| |
|
150 |
set name __OACS_DAV_TEST_FOLDER |
| |
|
151 |
set folder_id [content::folder::new \ |
| |
|
152 |
-label $name \ |
| |
|
153 |
-name $name] |
| |
|
154 |
|
| |
|
155 |
content::folder::register_content_type \ |
| |
|
156 |
-folder_id $folder_id \ |
| |
|
157 |
-content_type "content_revision" |
| |
|
158 |
|
| |
|
159 |
set item_id [content::item::new \ |
| |
|
160 |
-name "test_item_one" \ |
| |
|
161 |
-parent_id $folder_id \ |
| |
|
162 |
-storage_type "text"] |
| |
|
163 |
|
| |
|
164 |
set title "Test Title" |
| |
|
165 |
set revision_id [content::revision::new \ |
| |
|
166 |
-item_id $item_id \ |
| |
|
167 |
-title $title \ |
| |
|
168 |
-description "Test Description" \ |
| |
|
169 |
-content "Test Content"] |
| |
|
170 |
|
| |
|
171 |
set title "Test Title2" |
| |
|
172 |
set revision_id [content::revision::new \ |
| |
|
173 |
-item_id $item_id \ |
| |
|
174 |
-title $title \ |
| |
|
175 |
-description "Test Description2" \ |
| |
|
176 |
-content "Test Content2"] |
| |
|
177 |
|
| |
|
178 |
foreach priv {read write delete admin} { |
| |
|
179 |
aa_false "User does not have permission to '$priv' on the folder" \ |
| |
|
180 |
[oacs_dav::children_have_permission_p \ |
| |
|
181 |
-user_id $user_id -item_id $folder_id -privilege $priv] |
| |
|
182 |
aa_true "Admin has permission to '$priv' on the folder" \ |
| |
|
183 |
[oacs_dav::children_have_permission_p \ |
| |
|
184 |
-user_id $admin_id -item_id $folder_id -privilege $priv] |
| |
|
185 |
} |
| |
|
186 |
|
| |
|
187 |
aa_section "Set cr_item to not inherit permissions from the folder" |
| |
|
188 |
db_dml query {update acs_objects set security_inherit_p = 'f' where object_id = :item_id} |
| |
|
189 |
|
| |
|
190 |
aa_log "Grant read permission on the folder" |
| |
|
191 |
permission::grant -party_id $user_id -object_id $folder_id -privilege read |
| |
|
192 |
|
| |
|
193 |
aa_false "User does still not have permission to 'read' on the folder (no permissions on item)" \ |
| |
|
194 |
[oacs_dav::children_have_permission_p \ |
| |
|
195 |
-user_id $user_id -item_id $folder_id -privilege read] |
| |
|
196 |
|
| |
|
197 |
aa_log "Grant read permission on the item" |
| |
|
198 |
permission::grant -party_id $user_id -object_id $item_id -privilege read |
| |
|
199 |
|
| |
|
200 |
aa_false "User still does not have permission 'read' on the item (no delete permission on the revisions)" \ |
| |
|
201 |
[oacs_dav::children_have_permission_p \ |
| |
|
202 |
-user_id $user_id -item_id $item_id -privilege read] |
| |
|
203 |
|
| |
|
204 |
aa_log "Grant delete permission on the item" |
| |
|
205 |
permission::grant -party_id $user_id -object_id $item_id -privilege delete |
| |
|
206 |
aa_true "User has now permission 'read' on the item (revision inherit from item)" \ |
| |
|
207 |
[oacs_dav::children_have_permission_p \ |
| |
|
208 |
-user_id $user_id -item_id $item_id -privilege read] |
| |
|
209 |
|
| |
|
210 |
aa_log "Grant delete permission singularly to the revisions" |
| |
|
211 |
foreach revision_id [db_list q {select revision_id from cr_revisions where item_id = :item_id}] { |
| |
|
212 |
permission::grant -party_id $user_id -object_id $revision_id -privilege delete |
| |
|
213 |
} |
| |
|
214 |
|
| |
|
215 |
aa_true "User now havs permission 'read' on the item" \ |
| |
|
216 |
[oacs_dav::children_have_permission_p \ |
| |
|
217 |
-user_id $user_id -item_id $item_id -privilege read] |
| |
|
218 |
|
| |
|
219 |
aa_section "Set cr_item to inherit permissions from the folder" |
| |
|
220 |
db_dml query {update acs_objects set security_inherit_p = 't' where object_id = :item_id} |
| |
|
221 |
|
| |
|
222 |
aa_true "User now has permission 'read' on the folder" \ |
| |
|
223 |
[oacs_dav::children_have_permission_p \ |
| |
|
224 |
-user_id $user_id -item_id $folder_id -privilege read] |
| |
|
225 |
|
| |
|
226 |
aa_log "Revoke read permission on the item" |
| |
|
227 |
permission::revoke -party_id $user_id -object_id $item_id -privilege read |
| |
|
228 |
|
| |
|
229 |
aa_true "User still has permission 'read' on the folder" \ |
| |
|
230 |
[oacs_dav::children_have_permission_p \ |
| |
|
231 |
-user_id $user_id -item_id $folder_id -privilege read] |
| |
|
232 |
} |
| |
|
233 |
} |
| |
|
234 |
|
| |
|
235 |
|
| |
129 |
236 |
# Local variables: |
| |
130 |
237 |
# mode: tcl |
| |
131 |
238 |
# tcl-indent-level: 4 |
| |
132 |
239 |
# indent-tabs-mode: nil |
| |
133 |
240 |
# End: |