celluloid-http 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ class TcpSocketStub
2
+ extend Forwardable
3
+
4
+ def_delegators :@file, :readpartial, :read, :close
5
+
6
+ def initialize(file)
7
+ @file = file
8
+ end
9
+
10
+ def write(*args)
11
+ # stub
12
+ end
13
+
14
+ end
@@ -0,0 +1,20 @@
1
+ require 'bundler/setup'
2
+ Bundler.require
3
+
4
+ require 'minitest/autorun'
5
+ require "mocha/setup"
6
+
7
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
8
+
9
+ class TestCase < MiniTest::Unit::TestCase
10
+
11
+ def fixture_file(name)
12
+ File.open("test/fixtures/#{name}")
13
+ end
14
+
15
+ def stub_connection_with_fixture(name)
16
+ socket = TcpSocketStub.new fixture_file(name)
17
+ Celluloid::IO::TCPSocket.stubs(:new).returns(socket)
18
+ end
19
+
20
+ end
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class HttpTest < TestCase
4
+
5
+ def test_get_http_request
6
+ stub_connection_with_fixture("en.wikipedia.org")
7
+
8
+ request = Celluloid::Http::Request.new 'http://en.wikipedia.org/wiki/Http'
9
+ response = Celluloid::Http.send_requst request
10
+
11
+ assert_match /Wikipedia, the free encyclopedia/, response.body
12
+ end
13
+
14
+ end
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+
3
+ class RequestTest < TestCase
4
+
5
+ def test_create_http_request
6
+ url = 'http://en.wikipedia.org/wiki/Http?param=value'
7
+
8
+ request = Celluloid::Http::Request.new url
9
+
10
+ assert_equal url, request.url
11
+ assert_equal :get, request.method
12
+ assert_equal 80, request.port
13
+ assert_equal "http", request.scheme
14
+ assert_equal "en.wikipedia.org", request.host
15
+ assert_equal "/wiki/Http", request.path
16
+ assert_equal "param=value", request.query
17
+ end
18
+
19
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ class ResponseTest < TestCase
4
+
5
+ def test_create_http_response
6
+ body = '<!DOCTYPE html><html><head><heed><body>BODY</body></html>'
7
+ headers = {"Content-Length" => '172911'}
8
+ response = Celluloid::Http::Response.new :ok, headers, body
9
+
10
+ assert_equal :ok, response.status
11
+ assert_equal headers, response.headers
12
+ assert_equal body, response.body
13
+ end
14
+
15
+ def test_parse_http_response
16
+ fixture_response = fixture_file("en.wikipedia.org")
17
+
18
+ response = Celluloid::Http::Response.new
19
+
20
+ while chunk = fixture_response.read(128)
21
+ response << chunk
22
+ end
23
+
24
+ assert response.finished?
25
+ assert_equal 200, response.status
26
+ assert_equal "172911", response.headers["Content-Length"]
27
+ assert_equal "en", response.headers["Content-Language"]
28
+ end
29
+
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: celluloid-http
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Rozhnov Alexandr
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: celluloid-io
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: http_parser.rb
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: turn
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: mocha
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Http requests for celluloid.
95
+ email:
96
+ - gnox73@gmail.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - Gemfile
103
+ - LICENSE.txt
104
+ - README.md
105
+ - Rakefile
106
+ - celluloid-http.gemspec
107
+ - lib/celluloid-http.rb
108
+ - lib/celluloid-http/connection.rb
109
+ - lib/celluloid-http/http.rb
110
+ - lib/celluloid-http/request.rb
111
+ - lib/celluloid-http/response.rb
112
+ - lib/celluloid-http/version.rb
113
+ - test/fixtures/en.wikipedia.org
114
+ - test/support/tcp_socket_stub.rb
115
+ - test/test_helper.rb
116
+ - test/unit/http_test.rb
117
+ - test/unit/request_test.rb
118
+ - test/unit/response_test.rb
119
+ homepage: ''
120
+ licenses: []
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 1.8.24
140
+ signing_key:
141
+ specification_version: 3
142
+ summary: Http requests for celluloid. Based on Celluloid::IO.
143
+ test_files:
144
+ - test/fixtures/en.wikipedia.org
145
+ - test/support/tcp_socket_stub.rb
146
+ - test/test_helper.rb
147
+ - test/unit/http_test.rb
148
+ - test/unit/request_test.rb
149
+ - test/unit/response_test.rb