ape 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/CHANGELOG +1 -0
  2. data/LICENSE +19 -0
  3. data/Manifest +45 -0
  4. data/README +12 -0
  5. data/ape.gemspec +57 -0
  6. data/bin/ape_server +28 -0
  7. data/lib/ape.rb +982 -0
  8. data/lib/ape/atomURI.rb +73 -0
  9. data/lib/ape/auth/google_login_credentials.rb +96 -0
  10. data/lib/ape/auth/wsse_credentials.rb +25 -0
  11. data/lib/ape/authent.rb +42 -0
  12. data/lib/ape/categories.rb +95 -0
  13. data/lib/ape/collection.rb +51 -0
  14. data/lib/ape/crumbs.rb +39 -0
  15. data/lib/ape/entry.rb +151 -0
  16. data/lib/ape/escaper.rb +29 -0
  17. data/lib/ape/feed.rb +117 -0
  18. data/lib/ape/handler.rb +34 -0
  19. data/lib/ape/html.rb +17 -0
  20. data/lib/ape/invoker.rb +54 -0
  21. data/lib/ape/invokers/deleter.rb +31 -0
  22. data/lib/ape/invokers/getter.rb +80 -0
  23. data/lib/ape/invokers/poster.rb +57 -0
  24. data/lib/ape/invokers/putter.rb +46 -0
  25. data/lib/ape/layout/ape.css +56 -0
  26. data/lib/ape/layout/ape_logo.png +0 -0
  27. data/lib/ape/layout/index.html +54 -0
  28. data/lib/ape/layout/info.png +0 -0
  29. data/lib/ape/names.rb +24 -0
  30. data/lib/ape/print_writer.rb +21 -0
  31. data/lib/ape/samples.rb +180 -0
  32. data/lib/ape/samples/atom_schema.txt +338 -0
  33. data/lib/ape/samples/basic_entry.eruby +16 -0
  34. data/lib/ape/samples/categories_schema.txt +69 -0
  35. data/lib/ape/samples/mini_entry.eruby +8 -0
  36. data/lib/ape/samples/service_schema.txt +187 -0
  37. data/lib/ape/samples/unclean_xhtml_entry.eruby +21 -0
  38. data/lib/ape/server.rb +32 -0
  39. data/lib/ape/service.rb +12 -0
  40. data/lib/ape/validator.rb +65 -0
  41. data/lib/ape/version.rb +9 -0
  42. data/scripts/go.rb +29 -0
  43. data/test/test_helper.rb +17 -0
  44. data/test/unit/authent_test.rb +35 -0
  45. data/test/unit/invoker_test.rb +25 -0
  46. data/test/unit/samples_test.rb +36 -0
  47. metadata +111 -0
@@ -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