fernyb_davclient 0.0.9
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.
- data/LICENSE +53 -0
- data/Manifest +38 -0
- data/README.rdoc +134 -0
- data/Rakefile +95 -0
- data/bin/dav +6 -0
- data/examples/clean_files.rb +131 -0
- data/examples/meta_tags_in_use.rb +64 -0
- data/examples/remove_ds_store.rb +15 -0
- data/examples/scrape_site.rb +36 -0
- data/examples/simple_find.rb +10 -0
- data/fernyb_davclient.gemspec +35 -0
- data/lib/davclient.rb +513 -0
- data/lib/davclient/curl_commands.rb +70 -0
- data/lib/davclient/dav-ls.rb +168 -0
- data/lib/davclient/dav-propfind.rb +92 -0
- data/lib/davclient/dav-put.rb +137 -0
- data/lib/davclient/davcli.rb +286 -0
- data/lib/davclient/hpricot_extensions.rb +149 -0
- data/lib/davclient/simple.rb +44 -0
- data/lib/davclient/termutil.rb +55 -0
- data/lib/davclient/util.rb +256 -0
- data/tests/dav.rb +12 -0
- data/tests/tc_dav-cat.rb +34 -0
- data/tests/tc_dav-cd.rb +45 -0
- data/tests/tc_dav-cp.rb +51 -0
- data/tests/tc_dav-delete.rb +37 -0
- data/tests/tc_dav-get.rb +63 -0
- data/tests/tc_dav-ls.rb +45 -0
- data/tests/tc_dav-mkcol.rb +64 -0
- data/tests/tc_dav-mv.rb +65 -0
- data/tests/tc_dav-propfind.rb +40 -0
- data/tests/tc_dav-put.rb +132 -0
- data/tests/tc_util.rb +39 -0
- data/tests/tc_webdav_basic.rb +86 -0
- data/tests/tc_webdav_publish.rb +63 -0
- data/tests/test_helper.rb +2 -0
- data/tests/ts_davclient.rb +12 -0
- data/todo +32 -0
- metadata +118 -0
@@ -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
|
data/tests/tc_dav-get.rb
ADDED
@@ -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
|
data/tests/tc_dav-ls.rb
ADDED
@@ -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
|
data/tests/tc_dav-mv.rb
ADDED
@@ -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
|
data/tests/tc_dav-put.rb
ADDED
@@ -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
|