_file-storage__fs_publish_file (private)

 _file-storage__fs_publish_file

Defined in packages/file-storage/tcl/test/file-storage-procs.tcl

Partial Call Graph (max 5 caller/called nodes):
%3 aa_equals aa_equals (public) aa_log aa_log (public) aa_log_result aa_log_result (public) aa_run_with_teardown aa_run_with_teardown (public) aa_true aa_true (public) _file-storage__fs_publish_file _file-storage__fs_publish_file _file-storage__fs_publish_file->aa_equals _file-storage__fs_publish_file->aa_log _file-storage__fs_publish_file->aa_log_result _file-storage__fs_publish_file->aa_run_with_teardown _file-storage__fs_publish_file->aa_true

Testcases:
No testcase defined.
Source code:
        
        set _aa_export {}
        set body_count 1
        foreach testcase_body {{
        set user_id [dict get [acs::test::user::create] user_id]

        aa_run_with_teardown -rollback -test_code {
            aa_log "Create a root folder"
            set package_id [site_node::instantiate_and_mount  -package_key file-storage  -node_name __[clock seconds]_file_storage]
            permission::set_not_inherit -object_id $package_id

            set root_folder_id [fs::get_root_folder -package_id $package_id]

            aa_log "Create a folder"

            set folder_id [fs::new_folder  -name __test_fs_folder_1  -pretty_name __test_fs_folder_1_pretty  -parent_id $root_folder_id]

            set revisions [list]

            set content "This is a test file 1"
            set wfd [ad_opentmpfile tmp_filename]
            puts $wfd $content
            close $wfd

            lappend revisions [fs::add_file  -name __test_fs_publish_file_1  -parent_id $folder_id  -package_id $package_id  -tmp_filename $tmp_filename]

            set content "This is a test file 2"
            set wfd [ad_opentmpfile tmp_filename]
            puts $wfd $content
            close $wfd

            lappend revisions [fs::add_file  -name __test_fs_publish_file_2  -parent_id $folder_id  -package_id $package_id  -tmp_filename $tmp_filename]


            set content "This is a test file 3"
            set wfd [ad_opentmpfile tmp_filename]
            puts $wfd $content
            close $wfd

            lappend revisions [fs::add_file  -name __test_fs_publish_file_3  -parent_id $folder_id  -package_id $package_id  -tmp_filename $tmp_filename]

            aa_equals "fs::get_folder_objects returns nothing for unprivileged user"  [fs::get_folder_objects -folder_id $folder_id -user_id $user_id]  ""

            set security_root [acs_magic_object security_context_root]
            set swa_id [db_string get_swa {
                select max(user_id) from users u
                where acs_permission.permission_p(:security_root, u.user_id, 'admin')
            }]
            aa_equals "fs::get_folder_objects returns expected for SWA"  [lsort [fs::get_folder_objects -folder_id $folder_id -user_id $swa_id]]  [lsort [db_list query "select item_id from cr_items where live_revision in ([join $revisions ,])"]]

            set revision_id [lindex $revisions end]

            set item_id [db_string get_item_id {
                select item_id from cr_revisions
                where revision_id = :revision_id
            }]

            set webdav_url [fs::webdav_url  -item_id $item_id  -package_id $package_id  -root_folder_id $root_folder_id]
            if {[fs::webdav_p] && [oacs_dav::folder_enabled -folder_id $root_folder_id]} {
                set url_stub [content::item::get_virtual_path -root_folder_id $root_folder_id -item_id $item_id]
                set package_url [apm_package_url_from_id $package_id]
                set webdav_prefix [oacs_dav::uri_prefix]
                if { [security::RestrictLoginToSSLP] } {
                    set expected_url [security::get_secure_location]${webdav_prefix}${package_url}${url_stub}
                } else {
                    set expected_url [ad_url]${webdav_prefix}${package_url}${url_stub}
                }
            } else {
                set expected_url ""
            }
            aa_equals "WebDAV URL is expected"  $webdav_url $expected_url

            aa_equals "Package id from the API and from the database are consistent"  [fs::get_file_package_id -file_id $revision_id$package_id

            set file_hash [ns_md file $tmp_filename]

            set exported [fs::publish_versioned_object_to_file_system  -object_id $item_id]
            aa_equals "fs::publish_versioned_object_to_file_system: original and exported files are identical"  [ns_md file $exported$file_hash

            set exported [fs::publish_object_to_file_system  -object_id $item_id]
            aa_equals "fs::publish_object_to_file_system: original and exported files are identical"  [ns_md file $exported$file_hash

            aa_log "Add a link to the folder"
            set url https://test.website.url
            set link_id [content::extlink::new  -url $url  -parent_id $folder_id]
            set exported [fs::publish_url_to_file_system -object_id $link_id]
            set rfd [open $exported r]; set exported [read $rfd]; close $rfd
            aa_true "Link was exported" {
                [string first $url $exported] >= 0
            }

            aa_log "Add a symlink to the folder"
            content::folder::register_content_type  -folder_id $folder_id  -content_type content_symlink
            content::symlink::new  -target_id $item_id  -parent_id $folder_id

            fs::new_folder  -name __test_fs_subfolder  -pretty_name __test_fs_subfolder_pretty  -parent_id $folder_id

            set exported_folder [fs::publish_folder_to_file_system  -folder_id $folder_id  -user_id $swa_id]

            set folders 0
            set file_hashes 0
            set tot_files 0
            foreach c [glob -directory $exported_folder *] {
                set folder_p [file isdirectory $c]
                incr folders $folder_p
                incr file_hashes [expr {!$folder_p && $file_hash eq [ns_md file $c]}]
                incr tot_files
            }

            aa_equals "Tot folder content is 6"  $tot_files 6
            aa_equals "We have the same file twice (symlink)"  $file_hashes 2
            aa_equals "We have 1 folder"  $folders 1

        } -teardown_code {
            acs::test::user::delete -user_id $user_id
        }

    }} {
          aa_log "Running testcase body $body_count"
          set ::__aa_test_indent [info level]
          set catch_val [catch $testcase_body msg]
          if {$catch_val != 0 && $catch_val != 2} {
              aa_log_result "fail" "fs_publish_file (body $body_count): Error during execution: $msg, stack trace: \n$::errorInfo"
          }
          incr body_count
        }
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: