agoo 0.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of agoo might be problematic. Click here for more details.

@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $: << File.dirname(__FILE__)
4
+ $root_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
5
+ %w(lib ext).each do |dir|
6
+ $: << File.join($root_dir, dir)
7
+ end
8
+
9
+ require 'minitest'
10
+ require 'minitest/autorun'
11
+ require 'net/http'
12
+
13
+ require 'oj'
14
+
15
+ require 'agoo'
16
+
17
+ class RackHandlerTest < Minitest::Test
18
+
19
+ class TellMeHandler
20
+ def initialize
21
+ end
22
+
23
+ def call(req)
24
+ if 'GET' == req['REQUEST_METHOD']
25
+ [ 200,
26
+ { 'Content-Type' => 'application/json' },
27
+ [ Oj.dump(req.to_h, mode: :null) ]
28
+ ]
29
+ elsif 'POST' == req['REQUEST_METHOD']
30
+ [ 204, { }, [] ]
31
+ elsif 'PUT' == req['REQUEST_METHOD']
32
+ [ 201,
33
+ { },
34
+ [ req['rack.input'].read ]
35
+ ]
36
+ else
37
+ [ 404, {}, []]
38
+ end
39
+
40
+ end
41
+ end
42
+
43
+ def test_rack
44
+ begin
45
+ server = Agoo::Server.new(6465, 'root',
46
+ pedantic: false,
47
+ log_dir: '',
48
+ thread_count: 1,
49
+ log_console: true,
50
+ log_classic: true,
51
+ log_colorize: true,
52
+ log_states: {
53
+ INFO: false,
54
+ DEBUG: false,
55
+ connect: false,
56
+ request: false,
57
+ response: false,
58
+ eval: true,
59
+ })
60
+ #sleep(100)
61
+
62
+ handler = TellMeHandler.new
63
+ server.handle(:GET, "/tellme", handler)
64
+ server.handle(:POST, "/makeme", handler)
65
+ server.handle(:PUT, "/makeme", handler)
66
+ server.start()
67
+
68
+ eval_test
69
+ post_test
70
+ put_test
71
+ ensure
72
+ server.shutdown
73
+ end
74
+ end
75
+
76
+ def eval_test
77
+ uri = URI('http://localhost:6465/tellme?a=1')
78
+ req = Net::HTTP::Get.new(uri)
79
+ # Set the headers the way we want them.
80
+ req['Accept-Encoding'] = '*'
81
+ req['Accept'] = 'application/json'
82
+ req['User-Agent'] = 'Ruby'
83
+
84
+ res = Net::HTTP.start(uri.hostname, uri.port) { |h|
85
+ h.request(req)
86
+ }
87
+ content = res.body
88
+ obj = Oj.load(content, mode: :strict)
89
+
90
+ expect = {
91
+ "HTTP_Accept" => "application/json",
92
+ "HTTP_Accept-Encoding" => "*",
93
+ "HTTP_User-Agent" => "Ruby",
94
+ "PATH_INFO" => "",
95
+ "QUERY_STRING" => "a=1",
96
+ "REQUEST_METHOD" => "GET",
97
+ "SCRIPT_NAME" => "/tellme",
98
+ "SERVER_NAME" => "localhost",
99
+ "SERVER_PORT" => "6465",
100
+ "rack.errors" => nil,
101
+ "rack.input" => nil,
102
+ "rack.multiprocess" => false,
103
+ "rack.multithread" => false,
104
+ "rack.run_once" => false,
105
+ "rack.url_scheme" => "http",
106
+ "rack.version" => "2.0.3",
107
+ }
108
+ expect.each_pair { |k,v|
109
+ if v.nil?
110
+ assert_nil(obj[k], k)
111
+ else
112
+ assert_equal(v, obj[k], k)
113
+ end
114
+ }
115
+ end
116
+
117
+ def post_test
118
+ uri = URI('http://localhost:6465/makeme')
119
+ req = Net::HTTP::Post.new(uri)
120
+ # Set the headers the way we want them.
121
+ req['Accept-Encoding'] = '*'
122
+ req['Accept'] = 'application/json'
123
+ req['User-Agent'] = 'Ruby'
124
+
125
+ res = Net::HTTP.start(uri.hostname, uri.port) { |h|
126
+ h.request(req)
127
+ }
128
+ assert_equal(Net::HTTPNoContent, res.class)
129
+ end
130
+
131
+ def put_test
132
+ uri = URI('http://localhost:6465/makeme')
133
+ req = Net::HTTP::Put.new(uri)
134
+ # Set the headers the way we want them.
135
+ req['Accept-Encoding'] = '*'
136
+ req['Accept'] = 'application/json'
137
+ req['User-Agent'] = 'Ruby'
138
+ req.body = 'hello'
139
+
140
+ res = Net::HTTP.start(uri.hostname, uri.port) { |h|
141
+ h.request(req)
142
+ }
143
+ assert_equal(Net::HTTPCreated, res.class)
144
+ assert_equal('hello', res.body)
145
+ end
146
+
147
+ end
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $: << File.dirname(__FILE__)
4
+ $root_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
5
+ %w(lib ext).each do |dir|
6
+ $: << File.join($root_dir, dir)
7
+ end
8
+
9
+ require 'minitest'
10
+ require 'minitest/autorun'
11
+ require 'net/http'
12
+
13
+ require 'agoo'
14
+
15
+ class StaticTest < Minitest::Test
16
+
17
+ # Run all the tests in one test to avoid creating the server multiple times.
18
+ def test_static
19
+ begin
20
+ server = Agoo::Server.new(6466, 'root',
21
+ log_dir: '',
22
+ log_console: true,
23
+ log_classic: true,
24
+ log_colorize: true,
25
+ log_states: {
26
+ INFO: false,
27
+ DEBUG: false,
28
+ connect: false,
29
+ request: false,
30
+ response: false,
31
+ eval: true,
32
+ })
33
+ server.start()
34
+ fetch_index_test
35
+ fetch_auto_index_test
36
+ fetch_nested_test
37
+ fetch_not_found_test
38
+ ensure
39
+ server.shutdown
40
+ end
41
+ end
42
+
43
+
44
+ def fetch_index_test
45
+ uri = URI('http://localhost:6466/index.html')
46
+ content = Net::HTTP.get(uri)
47
+ expect = %|<!DOCTYPE html>
48
+ <html>
49
+ <head><title>Agoo Test</title></head>
50
+ <body>Agoo</body>
51
+ </html>
52
+ |
53
+ assert_equal(expect, content)
54
+ end
55
+
56
+ def fetch_auto_index_test
57
+ uri = URI('http://localhost:6466/')
58
+ content = Net::HTTP.get(uri)
59
+ expect = %|<!DOCTYPE html>
60
+ <html>
61
+ <head><title>Agoo Test</title></head>
62
+ <body>Agoo</body>
63
+ </html>
64
+ |
65
+ assert_equal(expect, content)
66
+ end
67
+
68
+ def fetch_nested_test
69
+ uri = URI('http://localhost:6466/nest/something.txt')
70
+ content = Net::HTTP.get(uri)
71
+ assert_equal('Just some text.
72
+ ', content)
73
+ end
74
+
75
+ def fetch_not_found_test
76
+ uri = URI('http://localhost:6466/bad.html')
77
+ res = Net::HTTP.get_response(uri)
78
+ assert_equal("404", res.code)
79
+ end
80
+
81
+ end
data/test/tests.rb ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $: << File.dirname(__FILE__)
4
+
5
+ require 'log_test'
6
+ require 'static_test'
7
+ require 'base_handler_test'
8
+ require 'rack_handler_test'
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: agoo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Ohler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake-compiler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '0.9'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: minitest
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '5'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: test-unit
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: wwtd
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ description: A fast HTTP server supporting rack.
76
+ email: peter@ohler.com
77
+ executables: []
78
+ extensions:
79
+ - ext/agoo/extconf.rb
80
+ extra_rdoc_files:
81
+ - README.md
82
+ files:
83
+ - LICENSE
84
+ - README.md
85
+ - ext/agoo/agoo.c
86
+ - ext/agoo/con.c
87
+ - ext/agoo/con.h
88
+ - ext/agoo/dtime.c
89
+ - ext/agoo/dtime.h
90
+ - ext/agoo/err.c
91
+ - ext/agoo/err.h
92
+ - ext/agoo/error_stream.c
93
+ - ext/agoo/error_stream.h
94
+ - ext/agoo/extconf.rb
95
+ - ext/agoo/hook.c
96
+ - ext/agoo/hook.h
97
+ - ext/agoo/http.c
98
+ - ext/agoo/http.h
99
+ - ext/agoo/log.c
100
+ - ext/agoo/log.h
101
+ - ext/agoo/log_queue.h
102
+ - ext/agoo/page.c
103
+ - ext/agoo/page.h
104
+ - ext/agoo/queue.c
105
+ - ext/agoo/queue.h
106
+ - ext/agoo/request.c
107
+ - ext/agoo/request.h
108
+ - ext/agoo/res.c
109
+ - ext/agoo/res.h
110
+ - ext/agoo/response.c
111
+ - ext/agoo/response.h
112
+ - ext/agoo/server.c
113
+ - ext/agoo/server.h
114
+ - ext/agoo/text.c
115
+ - ext/agoo/text.h
116
+ - ext/agoo/types.h
117
+ - lib/agoo.rb
118
+ - lib/agoo/version.rb
119
+ - test/base_handler_test.rb
120
+ - test/log_test.rb
121
+ - test/rack_handler_test.rb
122
+ - test/static_test.rb
123
+ - test/tests.rb
124
+ homepage: http://www.ohler.com/agoo
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options:
130
+ - "-t"
131
+ - Agoo
132
+ - "-m"
133
+ - README.md
134
+ - "-x"
135
+ - test/*
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '2.0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ requirements: []
149
+ rubyforge_project: agoo
150
+ rubygems_version: 2.7.3
151
+ signing_key:
152
+ specification_version: 4
153
+ summary: An HTTP server
154
+ test_files:
155
+ - test/base_handler_test.rb
156
+ - test/log_test.rb
157
+ - test/rack_handler_test.rb
158
+ - test/static_test.rb
159
+ - test/tests.rb