alice 0.1.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.
@@ -0,0 +1,35 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+
3
+ class TestEnv < Alice::TestCase
4
+ describe "Request#create" do
5
+ before :all do
6
+ @conn = Alice::Connection.new :url => 'http://sushi.com/api'
7
+ @input = {
8
+ :body => 'abc',
9
+ :headers => {'Server' => 'Alice'}}
10
+ @env_setup = Alice::Request.create do |req|
11
+ req.url 'foo.json', 'a' => 1
12
+ req['Server'] = 'Alice'
13
+ req.body = @input[:body]
14
+ end
15
+ @env = @env_setup.to_env_hash(@conn, :get)
16
+ end
17
+
18
+ it "stores method in :method" do
19
+ assert_equal :get, @env[:method]
20
+ end
21
+
22
+ it "stores Addressable::URI in :url" do
23
+ assert_equal 'http://sushi.com/api/foo.json?a=1', @env[:url].to_s
24
+ end
25
+
26
+ it "stores headers in :headers" do
27
+ assert_kind_of Rack::Utils::HeaderHash, @env[:request_headers]
28
+ assert_equal @input[:headers], @env[:request_headers]
29
+ end
30
+
31
+ it "stores body in :body" do
32
+ assert_equal @input[:body], @env[:body]
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'context'
3
+ if ENV['LEFTRIGHT']
4
+ require 'leftright'
5
+ end
6
+
7
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
8
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
+ require 'alice'
10
+
11
+ begin
12
+ require 'ruby-debug'
13
+ Debugger.start
14
+ rescue LoadError
15
+ end
16
+
17
+ module Alice
18
+ class TestCase < Test::Unit::TestCase
19
+ LIVE_SERVER = case ENV['LIVE']
20
+ when /^http/ then ENV['LIVE']
21
+ when nil then nil
22
+ else 'http://localhost:4567'
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+
4
+ get '/hello_world' do
5
+ 'hello world'
6
+ end
7
+
8
+ get '/json' do
9
+ "[1,2,3]"
10
+ end
11
+
12
+ post '/hello' do
13
+ "hello #{params[:name]}"
14
+ end
15
+
16
+ get '/hello' do
17
+ "hello #{params[:name]}"
18
+ end
19
+
20
+ post '/echo_name' do
21
+ params[:name].inspect
22
+ end
23
+
24
+ put '/echo_name' do
25
+ params[:name].inspect
26
+ end
27
+
28
+ delete '/delete_with_json' do
29
+ %/{"deleted":true}/
30
+ end
31
+
32
+ delete '/delete_with_params' do
33
+ params[:deleted]
34
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+
3
+ class RequestMiddlewareTest < Alice::TestCase
4
+ describe "encoding json" do
5
+ [:yajl, :rails_json].each do |key|
6
+ encoder = Alice::Request.lookup_module(key)
7
+ next if !encoder.loaded?
8
+ it "uses #{encoder}" do
9
+ @connection = Alice::Connection.new do
10
+ use encoder
11
+ adapter :test do |stub|
12
+ stub.post('echo_body') { |env| [200, {'Content-Type' => 'text/html'}, env[:body]] }
13
+ end
14
+ end
15
+ assert_equal %({"a":1}), @connection.post('echo_body', :a => 1).body
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+
3
+ class ResponseMiddlewareTest < Alice::TestCase
4
+ describe "parsing json" do
5
+ [:yajl, :rails_json].each do |key|
6
+ parser = Alice::Response.lookup_module(key)
7
+ next if !parser.loaded?
8
+ it "uses #{parser}" do
9
+ @connection = Alice::Connection.new do
10
+ adapter :test do |stub|
11
+ stub.get('json') { [200, {'Content-Type' => 'text/html'}, "[1,2,3]"] }
12
+ end
13
+ use parser
14
+ end
15
+ assert_equal [1,2,3], @connection.get('json').body
16
+ end
17
+ end
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alice
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - rick
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-03 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: addressable
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description: HTTP/REST API client library using Rack-like middleware
36
+ email: technoweenie@gmail.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - LICENSE
43
+ - README.rdoc
44
+ files:
45
+ - .document
46
+ - .gitignore
47
+ - LICENSE
48
+ - README.rdoc
49
+ - Rakefile
50
+ - VERSION
51
+ - lib/alice.rb
52
+ - lib/alice/adapter/net_http.rb
53
+ - lib/alice/adapter/patron.rb
54
+ - lib/alice/adapter/test.rb
55
+ - lib/alice/adapter/typhoeus.rb
56
+ - lib/alice/builder.rb
57
+ - lib/alice/connection.rb
58
+ - lib/alice/error.rb
59
+ - lib/alice/middleware.rb
60
+ - lib/alice/request.rb
61
+ - lib/alice/request/active_support_json.rb
62
+ - lib/alice/request/yajl.rb
63
+ - lib/alice/response.rb
64
+ - lib/alice/response/active_support_json.rb
65
+ - lib/alice/response/yajl.rb
66
+ - test/adapters/live_test.rb
67
+ - test/adapters/test_middleware_test.rb
68
+ - test/adapters/typhoeus_test.rb
69
+ - test/connection_app_test.rb
70
+ - test/connection_test.rb
71
+ - test/env_test.rb
72
+ - test/helper.rb
73
+ - test/live_server.rb
74
+ - test/request_middleware_test.rb
75
+ - test/response_middleware_test.rb
76
+ has_rdoc: true
77
+ homepage: http://github.com/technoweenie/alice
78
+ licenses: []
79
+
80
+ post_install_message:
81
+ rdoc_options:
82
+ - --charset=UTF-8
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: "0"
96
+ version:
97
+ requirements: []
98
+
99
+ rubyforge_project:
100
+ rubygems_version: 1.3.5
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: HTTP/REST API client library using Rack-like middleware
104
+ test_files:
105
+ - test/adapters/live_test.rb
106
+ - test/adapters/test_middleware_test.rb
107
+ - test/adapters/typhoeus_test.rb
108
+ - test/connection_app_test.rb
109
+ - test/connection_test.rb
110
+ - test/env_test.rb
111
+ - test/helper.rb
112
+ - test/live_server.rb
113
+ - test/request_middleware_test.rb
114
+ - test/response_middleware_test.rb