ape 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1 -0
- data/LICENSE +19 -0
- data/Manifest +45 -0
- data/README +12 -0
- data/ape.gemspec +57 -0
- data/bin/ape_server +28 -0
- data/lib/ape.rb +982 -0
- data/lib/ape/atomURI.rb +73 -0
- data/lib/ape/auth/google_login_credentials.rb +96 -0
- data/lib/ape/auth/wsse_credentials.rb +25 -0
- data/lib/ape/authent.rb +42 -0
- data/lib/ape/categories.rb +95 -0
- data/lib/ape/collection.rb +51 -0
- data/lib/ape/crumbs.rb +39 -0
- data/lib/ape/entry.rb +151 -0
- data/lib/ape/escaper.rb +29 -0
- data/lib/ape/feed.rb +117 -0
- data/lib/ape/handler.rb +34 -0
- data/lib/ape/html.rb +17 -0
- data/lib/ape/invoker.rb +54 -0
- data/lib/ape/invokers/deleter.rb +31 -0
- data/lib/ape/invokers/getter.rb +80 -0
- data/lib/ape/invokers/poster.rb +57 -0
- data/lib/ape/invokers/putter.rb +46 -0
- data/lib/ape/layout/ape.css +56 -0
- data/lib/ape/layout/ape_logo.png +0 -0
- data/lib/ape/layout/index.html +54 -0
- data/lib/ape/layout/info.png +0 -0
- data/lib/ape/names.rb +24 -0
- data/lib/ape/print_writer.rb +21 -0
- data/lib/ape/samples.rb +180 -0
- data/lib/ape/samples/atom_schema.txt +338 -0
- data/lib/ape/samples/basic_entry.eruby +16 -0
- data/lib/ape/samples/categories_schema.txt +69 -0
- data/lib/ape/samples/mini_entry.eruby +8 -0
- data/lib/ape/samples/service_schema.txt +187 -0
- data/lib/ape/samples/unclean_xhtml_entry.eruby +21 -0
- data/lib/ape/server.rb +32 -0
- data/lib/ape/service.rb +12 -0
- data/lib/ape/validator.rb +65 -0
- data/lib/ape/version.rb +9 -0
- data/scripts/go.rb +29 -0
- data/test/test_helper.rb +17 -0
- data/test/unit/authent_test.rb +35 -0
- data/test/unit/invoker_test.rb +25 -0
- data/test/unit/samples_test.rb +36 -0
- metadata +111 -0
data/test/test_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__) + '/../lib'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'ape'
|
4
|
+
|
5
|
+
def load_test_dir(dir)
|
6
|
+
Dir[File.join(File.dirname(__FILE__), dir, "*.rb")].each do |file|
|
7
|
+
require file
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module Writer
|
12
|
+
def response=(response)
|
13
|
+
@response = response
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Ape::Invoker.send(:include, Writer)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
class AuthentTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@authent = Ape::Authent.new('david', 'my secret password')
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_assert_raise_auth_error
|
9
|
+
assert_raise(Ape::AuthenticationError) { load_plugin("Oauth") }
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_assert_load_wsse_plugin
|
13
|
+
assert_not_nil(load_plugin("Wsse"))
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_assert_load_google_login_plugin
|
17
|
+
assert_not_nil(load_plugin("GoogleLogin"))
|
18
|
+
end
|
19
|
+
|
20
|
+
#def test_assert_add_google_login_credentials_not_fail
|
21
|
+
# @authent.add_to(Net::HTTP::Get.new('/'), 'GoogleLogin')
|
22
|
+
#end
|
23
|
+
|
24
|
+
def test_assert_add_wsse_credentials_not_fail
|
25
|
+
assert_nothing_raised(Exception) {
|
26
|
+
@authent.add_to(Net::HTTP::Get.new('/'), 'Wsse')
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def load_plugin(plugin_name)
|
31
|
+
@authent.resolve_plugin(plugin_name)
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
class InvokerTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@invoker = Ape::Invoker.new("http://localhost", Ape::Authent.new('david', 'mypassword'))
|
7
|
+
unauthorized = Net::HTTPUnauthorized.new(401, '1.1', '')
|
8
|
+
unauthorized['WWW-Authenticate'] = 'Wsse'
|
9
|
+
@invoker.response = unauthorized
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_assert_need_athentication_avoids_infinite_loops
|
13
|
+
(1..5).each do |x|
|
14
|
+
if x > 2
|
15
|
+
assert_raise(Ape::AuthenticationError) {
|
16
|
+
@invoker.need_authentication?(Net::HTTP::Get.new('/'))
|
17
|
+
}
|
18
|
+
else
|
19
|
+
assert_nothing_raised(Ape::AuthenticationError) {
|
20
|
+
@invoker.need_authentication?(Net::HTTP::Get.new('/'))
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
class SamplesTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_ape_home
|
7
|
+
assert_equal('/Users/david/.ape', Ape::Samples.home)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_load_service_schema
|
11
|
+
assert_not_nil(Ape::Samples.service_RNC)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_load_categories_schema
|
15
|
+
assert_not_nil(Ape::Samples.categories_RNC)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_load_atom_schema
|
19
|
+
assert_not_nil(Ape::Samples.atom_RNC)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_load_mini_entry
|
23
|
+
doc = REXML::Document.new(Ape::Samples.mini_entry)
|
24
|
+
assert_not_nil(REXML::XPath.first(doc.root, './id'))
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_load_basic_entry
|
28
|
+
doc = REXML::Document.new(Ape::Samples.basic_entry)
|
29
|
+
assert_not_nil(REXML::XPath.first(doc.root, './summary'))
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_load_unclean_xhtml_entry
|
33
|
+
doc = REXML::Document.new(Ape::Samples.unclean_xhtml_entry)
|
34
|
+
assert_not_nil(REXML::XPath.first(doc.root, './id'))
|
35
|
+
end
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ape
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tim Bray
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-02-22 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: builder
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
- - "="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 2.1.2
|
26
|
+
version:
|
27
|
+
description: A tool to exercice AtomPub server.
|
28
|
+
email: tim.bray@sun.com
|
29
|
+
executables:
|
30
|
+
- ape_server
|
31
|
+
extensions: []
|
32
|
+
|
33
|
+
extra_rdoc_files: []
|
34
|
+
|
35
|
+
files:
|
36
|
+
- bin/ape_server
|
37
|
+
- CHANGELOG
|
38
|
+
- lib/ape/atomURI.rb
|
39
|
+
- lib/ape/auth/google_login_credentials.rb
|
40
|
+
- lib/ape/auth/wsse_credentials.rb
|
41
|
+
- lib/ape/authent.rb
|
42
|
+
- lib/ape/categories.rb
|
43
|
+
- lib/ape/collection.rb
|
44
|
+
- lib/ape/crumbs.rb
|
45
|
+
- lib/ape/entry.rb
|
46
|
+
- lib/ape/escaper.rb
|
47
|
+
- lib/ape/feed.rb
|
48
|
+
- lib/ape/handler.rb
|
49
|
+
- lib/ape/html.rb
|
50
|
+
- lib/ape/invoker.rb
|
51
|
+
- lib/ape/invokers/deleter.rb
|
52
|
+
- lib/ape/invokers/getter.rb
|
53
|
+
- lib/ape/invokers/poster.rb
|
54
|
+
- lib/ape/invokers/putter.rb
|
55
|
+
- lib/ape/layout/ape.css
|
56
|
+
- lib/ape/layout/ape_logo.png
|
57
|
+
- lib/ape/layout/index.html
|
58
|
+
- lib/ape/layout/info.png
|
59
|
+
- lib/ape/names.rb
|
60
|
+
- lib/ape/print_writer.rb
|
61
|
+
- lib/ape/samples/atom_schema.txt
|
62
|
+
- lib/ape/samples/basic_entry.eruby
|
63
|
+
- lib/ape/samples/categories_schema.txt
|
64
|
+
- lib/ape/samples/mini_entry.eruby
|
65
|
+
- lib/ape/samples/service_schema.txt
|
66
|
+
- lib/ape/samples/unclean_xhtml_entry.eruby
|
67
|
+
- lib/ape/samples.rb
|
68
|
+
- lib/ape/server.rb
|
69
|
+
- lib/ape/service.rb
|
70
|
+
- lib/ape/validator.rb
|
71
|
+
- lib/ape/version.rb
|
72
|
+
- lib/ape.rb
|
73
|
+
- LICENSE
|
74
|
+
- README
|
75
|
+
- scripts/go.rb
|
76
|
+
- test/test_helper.rb
|
77
|
+
- test/unit/authent_test.rb
|
78
|
+
- test/unit/invoker_test.rb
|
79
|
+
- test/unit/samples_test.rb
|
80
|
+
- Manifest
|
81
|
+
- ape.gemspec
|
82
|
+
has_rdoc: true
|
83
|
+
homepage: http://www.tbray.org/ongoing/misc/Software#p-4
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
|
87
|
+
require_paths:
|
88
|
+
- lib
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: "0"
|
100
|
+
version:
|
101
|
+
requirements: []
|
102
|
+
|
103
|
+
rubyforge_project: ape
|
104
|
+
rubygems_version: 1.0.0
|
105
|
+
signing_key:
|
106
|
+
specification_version: 2
|
107
|
+
summary: A tool to exercice AtomPub server.
|
108
|
+
test_files:
|
109
|
+
- test/unit/authent_test.rb
|
110
|
+
- test/unit/invoker_test.rb
|
111
|
+
- test/unit/samples_test.rb
|