davclient 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'test/unit'
6
+ require 'test/zentest_assertions'
7
+
8
+ class TestDelete < Test::Unit::TestCase
9
+
10
+ def test_basic_delete
11
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/"
12
+ WebDAV.cd(url)
13
+
14
+ new_url = url + "davclient_test_folder/"
15
+
16
+ props = WebDAV.propfind(new_url, :xml => true)
17
+ if(props)
18
+ WebDAV.delete(new_url)
19
+ end
20
+ props = WebDAV.propfind(new_url, :xml => true)
21
+ assert_nil props
22
+
23
+ WebDAV.mkcol("davclient_test_folder")
24
+
25
+ props = WebDAV.propfind(new_url, :xml => true)
26
+ assert props
27
+
28
+ assert_equal url, WebDAV.CWURL
29
+
30
+ WebDAV.delete("davclient_test_folder")
31
+ props = WebDAV.propfind(new_url, :xml => true)
32
+ assert_nil props
33
+
34
+ end
35
+
36
+
37
+ end
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'davclient/davcli'
6
+ require 'test/unit'
7
+ require 'test/zentest_assertions'
8
+
9
+ class TestGetCLI < Test::Unit::TestCase
10
+
11
+ def get(*args)
12
+ out, err = util_capture do
13
+ DavCLI.get(*args)
14
+ end
15
+ return [out.string, err.string]
16
+ end
17
+
18
+ def create_file(filename, content)
19
+ File.open(filename, 'w') {|f| f.write(content) }
20
+ end
21
+
22
+ def setup
23
+ @basename = "get_test.html"
24
+ @filename = "/tmp/" + @basename
25
+ @url = "https://vortex-dav.uio.no/brukere/thomasfl/get_test/"
26
+ @html = "<html><head><title>Testfile</title></head><body><h1>Testfile</h1></body></html>"
27
+ create_file(@filename, @html)
28
+
29
+ WebDAV.delete(@url)
30
+ WebDAV.mkcol(@url)
31
+ WebDAV.cd(@url)
32
+
33
+ for i in 1..4 do
34
+ filename = "get_test_" + i.to_s + ".html"
35
+ PutCLI.put([@filename, @url + filename])
36
+ end
37
+
38
+ end
39
+
40
+ def teardown
41
+ File.delete(@filename)
42
+ # WebDAV.delete(@url)
43
+ WebDAV.cd("https://vortex-dav.uio.no/brukere/thomasfl/")
44
+ end
45
+
46
+ def test_basic_get
47
+ # dav get filename
48
+ # assert_equal @html, WebDAV.get(@url + @basename)
49
+ WebDAV.cd(@url)
50
+ # out, err = get(["get_test_1.html"])
51
+ `rm get_*.html 2> /dev/null`
52
+ DavCLI.get(["get_test_1.html"])
53
+ number_of_files = `ls -1 get_test*.html|wc -l`.to_i
54
+ assert_equal 1, number_of_files
55
+
56
+ `rm get_*.html 2> /dev/null`
57
+ DavCLI.get(["get_test_1.html", "get_test_2.html"])
58
+ number_of_files = `ls -1 get_test*.html|wc -l`.to_i
59
+ assert_equal 2, number_of_files
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,45 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'davclient'
6
+ require 'davclient/davcli'
7
+ require 'test/unit'
8
+ require 'test/zentest_assertions'
9
+
10
+
11
+ class TestLsCLI < Test::Unit::TestCase
12
+
13
+ def ls(*args)
14
+ out, err = util_capture do
15
+ DavCLI.ls(*args)
16
+ end
17
+ return [out.string, err.string]
18
+ end
19
+
20
+
21
+ def test_basic_ls
22
+ out, err = ls(["-a", "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/2005/"])
23
+ assert_equal(9, out.split(/\n/).size )
24
+
25
+ assert(out =~ /^https:\/\//)
26
+ assert_equal("", err)
27
+
28
+ out, err = ls(["https://vortex-dav.uio.no/brukere/thomasfl/"])
29
+ assert (not (out =~ /^http/))
30
+ end
31
+
32
+ def test_ls_cwurl
33
+ out, err = ls(["-a", "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/2006/"])
34
+ assert_equal(7, out.split(/\n/).size )
35
+
36
+ WebDAV.cd("https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/2006/")
37
+ out, err = ls(["-a"]) # If no url are given, should use the last used url
38
+ assert_equal(7, out.split(/\n/).size )
39
+
40
+ WebDAV.CWURL = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/2008/"
41
+ out, err = ls([])
42
+ assert_equal(10, out.split(/\n/).size )
43
+ end
44
+
45
+ end
@@ -0,0 +1,64 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'davclient/davcli'
6
+ require 'test/unit'
7
+ require 'test/zentest_assertions'
8
+
9
+ class TestMkcolCLI < Test::Unit::TestCase
10
+
11
+ def cd(*args)
12
+ out, err = util_capture do
13
+ DavCLI.cd(*args)
14
+ end
15
+ return [out.string, err.string]
16
+ end
17
+
18
+ def mkcol(*args)
19
+ out, err = util_capture do
20
+ DavCLI.mkcol(*args)
21
+ end
22
+ return [out.string, err.string]
23
+ end
24
+
25
+ def test_basic_mkcol
26
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/"
27
+ out, err = cd([url])
28
+ new_url = url + "davclient_test_folder/"
29
+
30
+ props = WebDAV.propfind(new_url, :xml => true)
31
+ if(props)
32
+ WebDAV.delete(new_url)
33
+ end
34
+
35
+ WebDAV.mkcol(new_url)
36
+ props = WebDAV.propfind(new_url, :xml => true)
37
+ assert props
38
+ end
39
+
40
+ def test_relative_url
41
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/"
42
+ out, err = cd([url])
43
+
44
+ new_url = url + "davclient_test_folder/"
45
+
46
+ props = WebDAV.propfind(new_url, :xml => true)
47
+ if(props)
48
+ WebDAV.delete(new_url)
49
+ end
50
+ props = WebDAV.propfind(new_url, :xml => true)
51
+ assert_nil props
52
+
53
+ WebDAV.mkcol("davclient_test_folder")
54
+
55
+ props = WebDAV.propfind(new_url, :xml => true)
56
+ assert props
57
+
58
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/"
59
+ out, err = cd(url)
60
+
61
+ end
62
+
63
+
64
+ end
@@ -0,0 +1,65 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'davclient/davcli'
6
+ require 'test/unit'
7
+ require 'test/zentest_assertions'
8
+
9
+ class TestMove < Test::Unit::TestCase
10
+
11
+ def mv(*args)
12
+ out, err = util_capture do
13
+ DavCLI.mv(*args)
14
+ end
15
+ return [out.string, err.string]
16
+ end
17
+
18
+ def test_mv
19
+ $DEBUG = false
20
+ src = "https://vortex-dav.uio.no/brukere/thomasfl/testfile.html"
21
+ dest = "https://vortex-dav.uio.no/brukere/thomasfl/testfile_copy.html"
22
+ WebDAV.delete(dest)
23
+ assert !WebDAV.exists?(dest)
24
+
25
+ WebDAV.mv(src,dest)
26
+ assert WebDAV.exists?(dest)
27
+ assert !WebDAV.exists?(src)
28
+
29
+ WebDAV.mv(dest, src)
30
+
31
+ assert !WebDAV.exists?(dest)
32
+ assert WebDAV.exists?(src)
33
+ end
34
+
35
+ def test_mv_command_line
36
+ src = "https://vortex-dav.uio.no/brukere/thomasfl/testfile.html"
37
+ dest = "https://vortex-dav.uio.no/brukere/thomasfl/testfile_copy.html"
38
+ WebDAV.delete(dest)
39
+ assert !WebDAV.exists?(dest)
40
+
41
+ out, err = mv([src,dest])
42
+ assert WebDAV.exists?(dest)
43
+ assert !WebDAV.exists?(src)
44
+
45
+ out, err = mv([dest, src])
46
+ assert !WebDAV.exists?(dest)
47
+ assert WebDAV.exists?(src)
48
+
49
+ end
50
+
51
+ def test_mv_relative
52
+ WebDAV.cd("https://vortex-dav.uio.no/brukere/thomasfl/")
53
+
54
+ src = "testfile.html"
55
+ dest = "testfile.html"
56
+
57
+ out, err = mv([src,dest])
58
+ assert WebDAV.exists?(dest)
59
+
60
+ out, err = mv([dest, src])
61
+ assert WebDAV.exists?(src)
62
+ end
63
+
64
+
65
+ end
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'davclient/davcli'
6
+ require 'test/unit'
7
+ require 'test/zentest_assertions'
8
+
9
+ class TestPropfind < Test::Unit::TestCase
10
+
11
+ def props(*args)
12
+ out, err = util_capture do
13
+ DavCLI.propfind(*args)
14
+ end
15
+ return [out.string, err.string]
16
+ end
17
+
18
+ def test_propfind_library_call
19
+ $DEBUG = false
20
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/"
21
+ props = WebDAV.propfind(url)
22
+ assert props.to_s.size > 1000
23
+
24
+ props = WebDAV.propfind("..")
25
+ assert props.to_s.size > 1000
26
+
27
+ url = "https://vortex-dav.uio.no/brukere/"
28
+ props = WebDAV.propfind("../../brukere/")
29
+ assert props.to_s.size > 1000
30
+
31
+ end
32
+
33
+ def test_propfind_command_line
34
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/"
35
+ out, err = props([url])
36
+ assert out.size > 10000
37
+ end
38
+
39
+
40
+ end
@@ -0,0 +1,132 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'rubygems'
4
+ require 'davclient'
5
+ require 'davclient'
6
+ require 'davclient/davcli'
7
+ require 'test/unit'
8
+ require 'test/zentest_assertions'
9
+ require 'pathname'
10
+
11
+ class TestPutCLI < Test::Unit::TestCase
12
+
13
+ def put(*args)
14
+ out, err = util_capture do
15
+ PutCLI.put(*args)
16
+ end
17
+ return [out.string, err.string]
18
+ end
19
+
20
+ def create_file(filename, content)
21
+ File.open(filename, 'w') {|f| f.write(content) }
22
+ end
23
+
24
+ def setup
25
+ @basename = "put_test.html"
26
+ @filename = "/tmp/" + @basename
27
+ @url = "https://vortex-dav.uio.no/brukere/thomasfl/"
28
+ @html = "<html><head><title>Testfile</title></head><body><h1>Testfile</h1></body></html>"
29
+ create_file(@filename, @html)
30
+ WebDAV.delete(@url + @basename)
31
+ end
32
+
33
+ def teardown
34
+ File.delete(@filename)
35
+ end
36
+
37
+ def test_basic_put
38
+ # dav put /tmp/filename
39
+ WebDAV.delete(@url + @basename)
40
+ WebDAV.cd(@url)
41
+ out, err = put([@filename])
42
+ assert_equal @html, WebDAV.get(@url + @basename)
43
+
44
+ # dav put /tmp/filename http://url/collection/
45
+ WebDAV.delete(@url + @basename)
46
+ out, err = put([@filename,@url])
47
+ assert_equal @html, WebDAV.get(@url + @basename)
48
+
49
+ # dav put /tmp/filename http://url/collection/remote-filename
50
+ WebDAV.delete(@url + @basename)
51
+ out, err = put([@filename,@url + @basename])
52
+ assert_equal @html, WebDAV.get(@url + @basename)
53
+
54
+ # dav put filename
55
+ @local_testfile = "put_test.html"
56
+
57
+ path = Pathname.new( Dir.getwd())
58
+ @local_testfile = (path + @local_testfile).to_s
59
+ create_file(@local_testfile, @html)
60
+ WebDAV.delete(@url + @basename)
61
+ WebDAV.cd(@url)
62
+
63
+ out, err = put([@filename])
64
+ assert_equal @html, WebDAV.get(@url + @basename)
65
+
66
+ # dav put ./filename
67
+ @local_testfile = "put_test.html"
68
+ @local_testfile_basename = @local_testfile
69
+ path = Pathname.new( Dir.getwd())
70
+ @local_testfile = (path + @local_testfile).to_s
71
+ create_file(@local_testfile, @html)
72
+ WebDAV.delete(@url + @local_testfile_basename)
73
+ WebDAV.cd(@url)
74
+
75
+ out, err = put(["./" + @local_testfile_basename])
76
+ assert_equal @html, WebDAV.get(@url + @local_testfile_basename)
77
+ end
78
+
79
+ def test_put_multiple_files
80
+ # dav put filename1 filename2 filename3 filename4
81
+ filelist = []
82
+ for i in 1..4 do
83
+ filename = "put_test_" + i.to_s + ".html"
84
+ create_file(filename, @html)
85
+ WebDAV.delete(@url + filename )
86
+ filelist << filename
87
+ end
88
+
89
+ # PutCLI.put(filelist)
90
+ out, err = put(filelist)
91
+
92
+ for i in 1..4 do
93
+ filename = "put_test_" + i.to_s + ".html"
94
+ assert_equal @html, WebDAV.get(@url + filename)
95
+ end
96
+
97
+ end
98
+
99
+
100
+ def test_put_multiple_files_to_url
101
+ # dav put filename1 filename2 filename3 filename4 https://url.com/folder/
102
+
103
+ url = @url + "put_test/"
104
+ WebDAV.delete(url)
105
+ WebDAV.mkcol(url)
106
+
107
+ filelist = []
108
+ for i in 1..4 do
109
+ filename = "put_test_" + i.to_s + ".html"
110
+ create_file(filename, @html)
111
+ filelist << filename
112
+ end
113
+
114
+ filelist << url
115
+
116
+ out, err = put(filelist)
117
+
118
+ for i in 1..4 do
119
+ filename = "put_test_" + i.to_s + ".html"
120
+ assert_equal @html, WebDAV.get(url + filename)
121
+ end
122
+ end
123
+
124
+ def test_file_not_found
125
+
126
+ assert_raise RuntimeError do
127
+ PutCLI.put(["a_file_that_doesn_exists_for_sure"])
128
+ end
129
+
130
+ end
131
+
132
+ end
@@ -0,0 +1,102 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ require 'test_helper'
5
+ require 'davclient'
6
+
7
+ $curl = "/usr/local/bin/curl"
8
+
9
+ class TestWebDAVLib < Test::Unit::TestCase
10
+
11
+
12
+ def test_find
13
+ url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/"
14
+ items = WebDAV.find(url)
15
+ assert(items.size > 10 )
16
+
17
+ antall = items.size
18
+ WebDAV.cd(url)
19
+ items = WebDAV.find()
20
+ assert_equal(antall, items.size )
21
+
22
+ assert_raise RuntimeError do
23
+ WebDAV.CWURL = nil
24
+ items = WebDAV.find()
25
+ end
26
+
27
+ items = WebDAV.find(url, :type => "collection")
28
+ assert( items.size > 9 )
29
+
30
+ counter = 0
31
+ WebDAV.find(url, :type => "collection") do |item|
32
+ counter += 1
33
+ end
34
+ assert(counter > 9 )
35
+
36
+ counter = 0
37
+ WebDAV.find(url + "2008/", :type => "collection", :recursive => true) do |item|
38
+ counter += 1
39
+ end
40
+ assert(counter > 9 )
41
+ end
42
+
43
+ end
44
+
45
+ class BullShit
46
+
47
+ def test_find_recursive
48
+ count = 0
49
+ url = "https://vortex-dav.uio.no/brukere/thomasfl/anniken_2007/sophos/"
50
+ WebDAV.find(url, :recursive => true ) do | item |
51
+ if(item.basename == ".DS_Store")
52
+ count += 1
53
+ end
54
+ end
55
+ assert_equal(1, count)
56
+ end
57
+
58
+ def test_get
59
+ url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/2008/02/nynorsk-paa-nett.html"
60
+ item = WebDAV.propfind(url)
61
+ assert(item)
62
+
63
+ content = WebDAV.get(url)
64
+ assert( content =~ /\<html/ )
65
+
66
+ end
67
+
68
+ def test_mkcol
69
+ url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/testcol/"
70
+
71
+ WebDAV.delete(url)
72
+
73
+ result = WebDAV.mkcol(url,nil)
74
+ assert(result)
75
+ col = WebDAV.propfind(url)
76
+ assert(col)
77
+
78
+ # TODO Set properties på collection
79
+
80
+ end
81
+
82
+ def test_propfind
83
+ url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/"
84
+ item = WebDAV.propfind(url, :xml => true)
85
+ assert(item.class == String)
86
+ # puts "DEBUG:: " + item
87
+
88
+ item = WebDAV.propfind(url)
89
+ assert(item.class != String)
90
+ assert_equal(url, item.href)
91
+ assert_equal("Nyheter", item.title)
92
+
93
+ assert_nil(item.denne_finnes_virkelig_ikke)
94
+
95
+ # Properties should be readable with minor misspellings like wrong casing
96
+ assert(item.property("v:resourceType") ) # CamelCased
97
+ assert(item.property("v:resourcetype") ) # Downcase
98
+
99
+ end
100
+
101
+
102
+ end
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test/unit'
3
+ require 'test_helper'
4
+ require 'davclient'
5
+
6
+ HTML = <<EOF
7
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
8
+ <html xmlns="http://www.w3.org/1999/xhtml">
9
+ <head>
10
+ <title>Test title</title>
11
+ </head>
12
+ <body>
13
+ <p>Test content</p>
14
+ </body>
15
+ </html>
16
+ EOF
17
+
18
+ props = <<EOF
19
+ <v:authors xmlns:v="vrtx">
20
+ <vrtx:values xmlns:vrtx="http://vortikal.org/xml-value-list">
21
+ <vrtx:value>Firstname Lastname</vrtx:value>
22
+ </vrtx:values>
23
+ </v:authors>
24
+ <v:resourceType xmlns:v="vrtx">article</v:resourceType>
25
+ <v:xhtml10-type xmlns:v="vrtx">article</v:xhtml10-type>
26
+ <v:published-date xmlns:v="vrtx">Wed, 22 Jul 2009 12:34:56 GMT</v:published-date>
27
+ <v:userspecifiedcharacterencoding xmlns:v="vrtx">utf-8</v:userspecifiedcharacterencoding>
28
+ <v:characterEncoding xmlns:v="vrtx">utf-8</v:characterEncoding>
29
+ EOF
30
+ PROPERTIES = props.gsub("\n","").gsub(/ +/," ")
31
+
32
+
33
+
34
+ class TestWebDAVLibPublish < Test::Unit::TestCase
35
+
36
+
37
+ def test_publish
38
+ url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/"
39
+ nyhet_url = url + "testnyhet_skal_slettes.html"
40
+
41
+ WebDAV.delete(nyhet_url)
42
+ nyhet = WebDAV.find(nyhet_url)
43
+ assert_nil(nyhet)
44
+
45
+ error = false
46
+ begin
47
+ WebDAV.publish(nyhet_url + "/", HTML, PROPERTIES )
48
+ rescue
49
+ error = true
50
+ end
51
+ assert(error)
52
+
53
+ WebDAV.publish(nyhet_url, HTML, PROPERTIES)
54
+
55
+ nyhet = WebDAV.propfind(nyhet_url)
56
+ assert(nyhet)
57
+ assert_equal("Test title", nyhet.title)
58
+ assert_equal("article", nyhet.resourcetype)
59
+ assert_equal("utf-8", nyhet.characterencoding)
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )
2
+
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ require 'tc_webdav_basic.rb'
3
+ require 'tc_webdav_publish.rb'
4
+ require 'tc_dav-cat.rb'
5
+ # require 'tc_dav-cd.rb'
6
+ # require 'tc_dav-cp.rb'
7
+ # require 'tc_dav-delete.rb'
8
+ # require 'tc_dav-ls.rb'
9
+ # require 'tc_dav-mkcol.rb'
10
+ # require 'tc_dav-mv.rb'
11
+ # require 'tc_dav-propfind.rb'