alice 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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