ape 1.5.1 → 1.6.0
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/README +1 -1
- data/Rakefile +14 -6
- data/bin/ape_server +1 -1
- data/lib/ape.rb +49 -36
- data/lib/ape/atomURI.rb +2 -2
- data/lib/ape/coll_element.rb +67 -0
- data/lib/ape/collection.rb +30 -33
- data/lib/ape/entry.rb +22 -10
- data/lib/ape/feed.rb +1 -1
- data/lib/ape/invoker.rb +17 -0
- data/lib/ape/invokers/getter.rb +18 -2
- data/lib/ape/invokers/poster.rb +6 -7
- data/lib/ape/names.rb +2 -1
- data/lib/ape/reporter.rb +1 -1
- data/lib/ape/samples.rb +2 -2
- data/lib/ape/server.rb +1 -1
- data/lib/ape/service.rb +20 -3
- data/lib/ape/util.rb +11 -7
- data/lib/ape/validator.rb +1 -1
- data/lib/ape/validators/entry_posts_validator.rb +2 -3
- data/lib/ape/validators/media_linkage_validator.rb +2 -2
- data/lib/ape/validators/media_posts_validator.rb +1 -2
- data/lib/ape/validators/sanitization_validator.rb +1 -1
- data/lib/ape/validators/service_document_validator.rb +14 -24
- data/lib/ape/version.rb +4 -4
- data/test/test_helper.rb +24 -1
- data/test/unit/ape_test.rb +8 -24
- data/test/unit/coll_element_test.rb +56 -0
- data/test/unit/collection_test.rb +43 -0
- data/test/unit/invoker_test.rb +6 -0
- data/test/unit/samples_test.rb +1 -1
- data/test/unit/service_test.rb +47 -0
- data/web/index.html +1 -1
- metadata +59 -51
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
|
5
|
+
class CollElementTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_accept
|
8
|
+
# no <accept> should accept only application/atom+xml;type=entry
|
9
|
+
c = make_coll('')
|
10
|
+
assert(c.accept?(Ape::Names::AtomEntryMediaType))
|
11
|
+
assert(!c.accept?(Ape::Names::AtomMediaType))
|
12
|
+
assert(!c.accept?(Ape::Names::AtomFeedMediaType))
|
13
|
+
assert(!c.accept?(Ape::Names::AppMediaType))
|
14
|
+
assert(!c.accept?('image/jpeg'))
|
15
|
+
assert(!c.accept?('text/plain'))
|
16
|
+
|
17
|
+
# */* should accept anything
|
18
|
+
types = [ Ape::Names::AtomEntryMediaType, Ape::Names::AtomMediaType,
|
19
|
+
Ape::Names::AtomFeedMediaType, Ape::Names::AppMediaType,
|
20
|
+
'image/jpeg', 'text/plain'
|
21
|
+
]
|
22
|
+
c = make_coll('*/*')
|
23
|
+
types.each { |t| assert(c.accept?(t))}
|
24
|
+
|
25
|
+
# ... even if it's got something else in front of it
|
26
|
+
c = make_coll('image/jpeg', '*/*')
|
27
|
+
types.each { |t| assert(c.accept?(t))}
|
28
|
+
assert(c.accept?('image/jpeg'))
|
29
|
+
|
30
|
+
# .. shouldn't accept anything but one type
|
31
|
+
c = make_coll('audio/mp3')
|
32
|
+
types.each { |t| assert(!c.accept?(t))}
|
33
|
+
assert(c.accept?('audio/mp3'))
|
34
|
+
|
35
|
+
# image/*
|
36
|
+
c = make_coll('image/*')
|
37
|
+
['jpeg', 'png', 'gif'].each {|sub| assert(c.accept?("image/#{sub}"))}
|
38
|
+
[ Ape::Names::AtomEntryMediaType, Ape::Names::AtomMediaType,
|
39
|
+
Ape::Names::AtomFeedMediaType, Ape::Names::AppMediaType,
|
40
|
+
'text/plain' ].each {|t| assert(!c.accept?(t))}
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def make_coll(*accepts)
|
47
|
+
front = '<collection xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
|
48
|
+
<atom:title>X</atom:title>'
|
49
|
+
back = "</collection>"
|
50
|
+
r = front
|
51
|
+
accepts.each { |a| r += "<accept>#{a}</accept>" }
|
52
|
+
r += back
|
53
|
+
r = REXML::Document.new(r).root
|
54
|
+
Ape::CollElement.new(r)
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
|
5
|
+
class CollectionTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_make_rake_shut_up
|
8
|
+
assert(true, "WIll fill some tests in when I look at Collection")
|
9
|
+
end
|
10
|
+
|
11
|
+
# def test_post_require_data
|
12
|
+
# assert_raise(StandardError) { stub_coll.post() }
|
13
|
+
# end
|
14
|
+
|
15
|
+
# def test_post_should_matches_content_type
|
16
|
+
# assert_raise(StandardError) { stub_coll.post(:data => 'asdfsadf', :type => 'image/png') }
|
17
|
+
# end
|
18
|
+
|
19
|
+
# def test_post_method_returns_poster
|
20
|
+
# assert_not_nil(stub_coll.post(:data => 'asdf'))
|
21
|
+
# end
|
22
|
+
|
23
|
+
# private
|
24
|
+
# def stub_coll
|
25
|
+
# post = Ape::Poster.new('http://localhost', nil)
|
26
|
+
# post.stubs(:post).returns(true)
|
27
|
+
#
|
28
|
+
# coll = make_coll(Ape::Names::AtomEntryMediaType)
|
29
|
+
# coll.stubs(:poster).returns(post)
|
30
|
+
# coll
|
31
|
+
# end
|
32
|
+
|
33
|
+
# def make_coll(*accepts)
|
34
|
+
# front = '<collection xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
|
35
|
+
# <atom:title>X</atom:title>'
|
36
|
+
# back = "</collection>"
|
37
|
+
# r = front
|
38
|
+
# accepts.each { |a| r += "<accept>#{a}</accept>" }
|
39
|
+
# r += back
|
40
|
+
# r = REXML::Document.new(r).root
|
41
|
+
# Ape::CollElement.new(r)
|
42
|
+
# end
|
43
|
+
end
|
data/test/unit/invoker_test.rb
CHANGED
data/test/unit/samples_test.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
class ServiceTest < Test::Unit::TestCase
|
4
|
+
def test_new_service_instance_raises_not_found_error
|
5
|
+
assert_raise(StandardError) {
|
6
|
+
Ape::Service.new(:uri => 'http://localhost/atomPub')
|
7
|
+
}
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_service_each_gets_entry_collection
|
11
|
+
service_doc = load_service
|
12
|
+
titles = []
|
13
|
+
service_doc.collections.each do |collection|
|
14
|
+
titles << collection.title if collection.accept?(Ape::Names::AtomEntryMediaType)
|
15
|
+
end
|
16
|
+
assert_equal(['Posts', 'Comments'], titles)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_service_each_gets_all_collections
|
20
|
+
service_doc = load_service
|
21
|
+
titles = []
|
22
|
+
service_doc.collections.each do |collection|
|
23
|
+
titles << collection.title
|
24
|
+
end
|
25
|
+
assert_equal(4, titles.size)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_service_each_gets_none_collections
|
29
|
+
service_doc = load_service
|
30
|
+
titles = []
|
31
|
+
service_doc.collections.each do |collection|
|
32
|
+
titles << collection.title if collection.accept?('video/*')
|
33
|
+
end
|
34
|
+
assert_equal(0, titles.size)
|
35
|
+
end
|
36
|
+
|
37
|
+
def load_service
|
38
|
+
service_doc = Ape::Service.new
|
39
|
+
service_doc.service = service {
|
40
|
+
collection('Posts') +
|
41
|
+
collection('Comments') +
|
42
|
+
collection('Attachments', ['image/jpg']) +
|
43
|
+
collection('Attachments2', ['image/png'])
|
44
|
+
}
|
45
|
+
service_doc
|
46
|
+
end
|
47
|
+
end
|
data/web/index.html
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
<html>
|
2
2
|
<head>
|
3
3
|
<title>Atom Protocol Exerciser</title>
|
4
|
-
<link rel='stylesheet' type='text/css' href='
|
4
|
+
<link rel='stylesheet' type='text/css' href='ape.css' />
|
5
5
|
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
|
6
6
|
</head>
|
7
7
|
<body>
|
metadata
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Bray
|
8
|
+
- David Calavera
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
12
|
|
12
|
-
date:
|
13
|
+
date: 2009-10-27 00:00:00 +01:00
|
13
14
|
default_executable:
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: rake
|
18
|
+
type: :runtime
|
17
19
|
version_requirement:
|
18
20
|
version_requirements: !ruby/object:Gem::Requirement
|
19
21
|
requirements:
|
@@ -23,6 +25,7 @@ dependencies:
|
|
23
25
|
version:
|
24
26
|
- !ruby/object:Gem::Dependency
|
25
27
|
name: mongrel
|
28
|
+
type: :runtime
|
26
29
|
version_requirement:
|
27
30
|
version_requirements: !ruby/object:Gem::Requirement
|
28
31
|
requirements:
|
@@ -32,6 +35,7 @@ dependencies:
|
|
32
35
|
version:
|
33
36
|
- !ruby/object:Gem::Dependency
|
34
37
|
name: erubis
|
38
|
+
type: :runtime
|
35
39
|
version_requirement:
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
37
41
|
requirements:
|
@@ -41,6 +45,7 @@ dependencies:
|
|
41
45
|
version:
|
42
46
|
- !ruby/object:Gem::Dependency
|
43
47
|
name: rubyforge
|
48
|
+
type: :runtime
|
44
49
|
version_requirement:
|
45
50
|
version_requirements: !ruby/object:Gem::Requirement
|
46
51
|
requirements:
|
@@ -50,6 +55,7 @@ dependencies:
|
|
50
55
|
version:
|
51
56
|
- !ruby/object:Gem::Dependency
|
52
57
|
name: mocha
|
58
|
+
type: :runtime
|
53
59
|
version_requirement:
|
54
60
|
version_requirements: !ruby/object:Gem::Requirement
|
55
61
|
requirements:
|
@@ -58,7 +64,9 @@ dependencies:
|
|
58
64
|
version: 0.9.0
|
59
65
|
version:
|
60
66
|
description:
|
61
|
-
email:
|
67
|
+
email:
|
68
|
+
- tim.bray@sun.com
|
69
|
+
- calavera@apache.org
|
62
70
|
executables:
|
63
71
|
- ape_server
|
64
72
|
extensions: []
|
@@ -67,74 +75,74 @@ extra_rdoc_files:
|
|
67
75
|
- README
|
68
76
|
- LICENSE
|
69
77
|
files:
|
70
|
-
- lib/ape.rb
|
71
|
-
- lib/ape
|
72
|
-
- lib/ape/feed.rb
|
73
|
-
- lib/ape/categories.rb
|
74
|
-
- lib/ape/names.rb
|
75
|
-
- lib/ape/crumbs.rb
|
76
78
|
- lib/ape/server.rb
|
77
|
-
- lib/ape/service.rb
|
78
79
|
- lib/ape/collection.rb
|
79
|
-
- lib/ape/
|
80
|
-
- lib/ape/
|
81
|
-
- lib/ape/util.rb
|
82
|
-
- lib/ape/invokers
|
83
|
-
- lib/ape/invokers/poster.rb
|
84
|
-
- lib/ape/invokers/getter.rb
|
80
|
+
- lib/ape/print_writer.rb
|
81
|
+
- lib/ape/samples.rb
|
85
82
|
- lib/ape/invokers/deleter.rb
|
83
|
+
- lib/ape/invokers/getter.rb
|
84
|
+
- lib/ape/invokers/poster.rb
|
86
85
|
- lib/ape/invokers/putter.rb
|
86
|
+
- lib/ape/reporter.rb
|
87
|
+
- lib/ape/escaper.rb
|
87
88
|
- lib/ape/atomURI.rb
|
89
|
+
- lib/ape/categories.rb
|
90
|
+
- lib/ape/invoker.rb
|
91
|
+
- lib/ape/validator_dsl.rb
|
92
|
+
- lib/ape/version.rb
|
93
|
+
- lib/ape/coll_element.rb
|
94
|
+
- lib/ape/feed.rb
|
95
|
+
- lib/ape/service.rb
|
96
|
+
- lib/ape/auth/google_login_credentials.rb
|
97
|
+
- lib/ape/auth/wsse_credentials.rb
|
98
|
+
- lib/ape/authent.rb
|
88
99
|
- lib/ape/entry.rb
|
89
|
-
- lib/ape/
|
100
|
+
- lib/ape/handler.rb
|
101
|
+
- lib/ape/reporters/html_template.eruby
|
102
|
+
- lib/ape/reporters/html_reporter.rb
|
103
|
+
- lib/ape/reporters/atom_reporter.rb
|
104
|
+
- lib/ape/reporters/text_reporter.rb
|
105
|
+
- lib/ape/reporters/atom_template.eruby
|
106
|
+
- lib/ape/crumbs.rb
|
107
|
+
- lib/ape/util.rb
|
108
|
+
- lib/ape/names.rb
|
109
|
+
- lib/ape/validator.rb
|
90
110
|
- lib/ape/validators/entry_posts_validator.rb
|
111
|
+
- lib/ape/validators/media_posts_validator.rb
|
112
|
+
- lib/ape/validators/service_document_validator.rb
|
91
113
|
- lib/ape/validators/sanitization_validator.rb
|
92
|
-
- lib/ape/validators/schema_validator.rb
|
93
114
|
- lib/ape/validators/media_linkage_validator.rb
|
94
|
-
- lib/ape/validators/service_document_validator.rb
|
95
|
-
- lib/ape/validators/media_posts_validator.rb
|
96
115
|
- lib/ape/validators/sorting_validator.rb
|
97
|
-
- lib/ape/
|
98
|
-
- lib/ape/auth
|
99
|
-
- lib/ape/auth/wsse_credentials.rb
|
100
|
-
- lib/ape/auth/google_login_credentials.rb
|
101
|
-
- lib/ape/escaper.rb
|
102
|
-
- lib/ape/authent.rb
|
103
|
-
- lib/ape/version.rb
|
104
|
-
- lib/ape/validator.rb
|
105
|
-
- lib/ape/reporters
|
106
|
-
- lib/ape/reporters/atom_template.eruby
|
107
|
-
- lib/ape/reporters/atom_reporter.rb
|
108
|
-
- lib/ape/reporters/text_reporter.rb
|
109
|
-
- lib/ape/reporters/html_template.eruby
|
110
|
-
- lib/ape/reporters/html_reporter.rb
|
111
|
-
- lib/ape/samples.rb
|
112
|
-
- lib/ape/invoker.rb
|
113
|
-
- lib/ape/handler.rb
|
116
|
+
- lib/ape/validators/schema_validator.rb
|
114
117
|
- lib/ape/html.rb
|
115
|
-
-
|
116
|
-
- samples/categories_schema.txt
|
118
|
+
- lib/ape.rb
|
117
119
|
- samples/service_schema.txt
|
118
|
-
- samples/mini_entry.eruby
|
119
120
|
- samples/atom_schema.txt
|
120
121
|
- samples/unclean_xhtml_entry.eruby
|
121
|
-
-
|
122
|
-
-
|
123
|
-
-
|
124
|
-
- test/
|
122
|
+
- samples/basic_entry.eruby
|
123
|
+
- samples/categories_schema.txt
|
124
|
+
- samples/mini_entry.eruby
|
125
|
+
- test/test_helper.rb
|
125
126
|
- test/unit/reporter_test.rb
|
127
|
+
- test/unit/invoker_test.rb
|
126
128
|
- test/unit/ape_test.rb
|
129
|
+
- test/unit/samples_test.rb
|
130
|
+
- test/unit/collection_test.rb
|
131
|
+
- test/unit/coll_element_test.rb
|
132
|
+
- test/unit/validators_test.rb
|
133
|
+
- test/unit/service_test.rb
|
127
134
|
- test/unit/authent_test.rb
|
128
|
-
- test/test_helper.rb
|
129
|
-
- web/info.png
|
130
|
-
- web/ape_logo.png
|
131
135
|
- web/ape.css
|
136
|
+
- web/ape_logo.png
|
132
137
|
- web/index.html
|
138
|
+
- web/info.png
|
133
139
|
- README
|
134
140
|
- LICENSE
|
135
141
|
- Rakefile
|
136
|
-
has_rdoc:
|
137
|
-
homepage: ape.rubyforge.org
|
142
|
+
has_rdoc: true
|
143
|
+
homepage: http://ape.rubyforge.org
|
144
|
+
licenses: []
|
145
|
+
|
138
146
|
post_install_message:
|
139
147
|
rdoc_options: []
|
140
148
|
|
@@ -155,9 +163,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
163
|
requirements: []
|
156
164
|
|
157
165
|
rubyforge_project: ape
|
158
|
-
rubygems_version: 1.
|
166
|
+
rubygems_version: 1.3.5
|
159
167
|
signing_key:
|
160
|
-
specification_version:
|
168
|
+
specification_version: 3
|
161
169
|
summary: The Atom Protocol Exerciser
|
162
170
|
test_files: []
|
163
171
|
|