strelka 0.15.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/ChangeLog +3293 -3058
  5. data/History.rdoc +17 -0
  6. data/Manifest.txt +3 -0
  7. data/Rakefile +2 -2
  8. data/contrib/hoetemplate/lib/file_name.rb.erb +3 -2
  9. data/contrib/hoetemplate/spec/file_name_spec.rb.erb +1 -1
  10. data/examples/apps/auth-demo +1 -2
  11. data/examples/apps/auth-demo2 +1 -2
  12. data/examples/apps/sessions-demo +1 -2
  13. data/examples/gen-config.rb +1 -2
  14. data/lib/strelka.rb +92 -17
  15. data/lib/strelka/app.rb +7 -6
  16. data/lib/strelka/app/auth.rb +5 -5
  17. data/lib/strelka/app/errors.rb +1 -1
  18. data/lib/strelka/app/filters.rb +1 -1
  19. data/lib/strelka/app/negotiation.rb +1 -1
  20. data/lib/strelka/app/parameters.rb +1 -1
  21. data/lib/strelka/app/restresources.rb +14 -21
  22. data/lib/strelka/app/routing.rb +5 -6
  23. data/lib/strelka/app/sessions.rb +3 -1
  24. data/lib/strelka/app/templating.rb +1 -1
  25. data/lib/strelka/authprovider.rb +1 -1
  26. data/lib/strelka/authprovider/basic.rb +1 -0
  27. data/lib/strelka/authprovider/hostaccess.rb +1 -0
  28. data/lib/strelka/behavior/plugin.rb +2 -2
  29. data/lib/strelka/cli.rb +2 -1
  30. data/lib/strelka/command/config.rb +2 -1
  31. data/lib/strelka/command/discover.rb +2 -1
  32. data/lib/strelka/command/start.rb +2 -1
  33. data/lib/strelka/constants.rb +1 -1
  34. data/lib/strelka/cookie.rb +1 -1
  35. data/lib/strelka/cookieset.rb +1 -1
  36. data/lib/strelka/discovery.rb +1 -1
  37. data/lib/strelka/httprequest.rb +4 -4
  38. data/lib/strelka/httprequest/acceptparams.rb +1 -1
  39. data/lib/strelka/httprequest/auth.rb +3 -1
  40. data/lib/strelka/httprequest/negotiation.rb +1 -1
  41. data/lib/strelka/httprequest/session.rb +3 -1
  42. data/lib/strelka/httpresponse.rb +2 -3
  43. data/lib/strelka/httpresponse/negotiation.rb +1 -1
  44. data/lib/strelka/httpresponse/session.rb +1 -1
  45. data/lib/strelka/mixins.rb +26 -5
  46. data/lib/strelka/multipartparser.rb +3 -3
  47. data/lib/strelka/paramvalidator.rb +4 -4
  48. data/lib/strelka/plugins.rb +14 -5
  49. data/lib/strelka/router.rb +1 -1
  50. data/lib/strelka/router/default.rb +1 -1
  51. data/lib/strelka/router/exclusive.rb +1 -1
  52. data/lib/strelka/session.rb +1 -0
  53. data/lib/strelka/session/db.rb +1 -0
  54. data/lib/strelka/session/default.rb +1 -0
  55. data/lib/strelka/testing.rb +454 -14
  56. data/lib/strelka/websocketserver.rb +150 -36
  57. data/lib/strelka/websocketserver/heartbeat.rb +163 -0
  58. data/lib/strelka/websocketserver/routing.rb +46 -19
  59. data/spec/constants.rb +1 -1
  60. data/spec/helpers.rb +15 -6
  61. data/spec/strelka/app/auth_spec.rb +5 -3
  62. data/spec/strelka/app/errors_spec.rb +2 -2
  63. data/spec/strelka/app/filters_spec.rb +2 -2
  64. data/spec/strelka/app/negotiation_spec.rb +2 -2
  65. data/spec/strelka/app/parameters_spec.rb +5 -5
  66. data/spec/strelka/app/restresources_spec.rb +8 -6
  67. data/spec/strelka/app/routing_spec.rb +3 -3
  68. data/spec/strelka/app/sessions_spec.rb +4 -2
  69. data/spec/strelka/app/templating_spec.rb +2 -2
  70. data/spec/strelka/app_spec.rb +5 -24
  71. data/spec/strelka/authprovider/basic_spec.rb +3 -2
  72. data/spec/strelka/authprovider/hostaccess_spec.rb +3 -2
  73. data/spec/strelka/authprovider_spec.rb +3 -2
  74. data/spec/strelka/cli_spec.rb +7 -4
  75. data/spec/strelka/cookie_spec.rb +2 -2
  76. data/spec/strelka/cookieset_spec.rb +2 -2
  77. data/spec/strelka/discovery_spec.rb +2 -2
  78. data/spec/strelka/exceptions_spec.rb +2 -2
  79. data/spec/strelka/httprequest/acceptparams_spec.rb +2 -2
  80. data/spec/strelka/httprequest/auth_spec.rb +3 -2
  81. data/spec/strelka/httprequest/negotiation_spec.rb +2 -2
  82. data/spec/strelka/httprequest/session_spec.rb +3 -2
  83. data/spec/strelka/httprequest_spec.rb +7 -2
  84. data/spec/strelka/httpresponse/negotiation_spec.rb +6 -5
  85. data/spec/strelka/httpresponse/session_spec.rb +3 -2
  86. data/spec/strelka/httpresponse_spec.rb +4 -3
  87. data/spec/strelka/mixins_spec.rb +85 -2
  88. data/spec/strelka/multipartparser_spec.rb +5 -4
  89. data/spec/strelka/paramvalidator_spec.rb +15 -10
  90. data/spec/strelka/plugins_spec.rb +24 -2
  91. data/spec/strelka/router/default_spec.rb +2 -2
  92. data/spec/strelka/router/exclusive_spec.rb +2 -2
  93. data/spec/strelka/router_spec.rb +2 -2
  94. data/spec/strelka/session/db_spec.rb +3 -2
  95. data/spec/strelka/session/default_spec.rb +3 -2
  96. data/spec/strelka/session_spec.rb +3 -2
  97. data/spec/strelka/testing_spec.rb +772 -0
  98. data/spec/strelka/websocketserver/heartbeat_spec.rb +19 -0
  99. data/spec/strelka/websocketserver/routing_spec.rb +31 -29
  100. data/spec/strelka/websocketserver_spec.rb +210 -75
  101. data/spec/strelka_spec.rb +172 -2
  102. metadata +43 -36
  103. metadata.gz.sig +0 -0
@@ -1,13 +1,31 @@
1
- #!/usr/bin/env rspec -cfd -b
1
+ # -*- ruby -*-
2
+ # vim: set nosta noet ts=4 sw=4:
3
+ # frozen-string-literal: true
2
4
 
3
5
  require_relative 'helpers'
4
6
 
5
7
  require 'rspec'
6
8
  require 'strelka'
7
9
 
8
- describe Strelka do
10
+ RSpec.describe Strelka do
11
+
12
+ before( :all ) do
13
+ @original_config_env = ENV[Strelka::CONFIG_ENV]
14
+ end
15
+
16
+ before( :each ) do
17
+ ENV.delete(Strelka::CONFIG_ENV)
18
+ Strelka.after_configure_hooks.clear
19
+ end
20
+
21
+ after( :all ) do
22
+ ENV[Strelka::CONFIG_ENV] = @original_config_env
23
+ end
24
+
25
+
9
26
 
10
27
  describe "version methods" do
28
+
11
29
  it "returns a version string if asked" do
12
30
  expect( described_class.version_string ).to match( /\w+ [\d.]+/ )
13
31
  end
@@ -17,7 +35,159 @@ describe Strelka do
17
35
  expect( described_class.version_string(true) ).
18
36
  to match(/\w+ [\d.]+ \(build [[:xdigit:]]+\)/)
19
37
  end
38
+
39
+ end
40
+
41
+
42
+ # let( :config ) { Configurability::Config.new(TESTING_CONFIG_SOURCE) }
43
+
44
+
45
+ it "will load a local config file if it exists and none is specified" do
46
+ config_object = double( "Configurability::Config object" )
47
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
48
+
49
+ expect( Configurability ).to receive( :gather_defaults ).
50
+ and_return( {} )
51
+ expect( Strelka::LOCAL_CONFIG_FILE ).to receive( :exist? ).
52
+ and_return( true )
53
+ expect( Configurability::Config ).to receive( :load ).
54
+ with( Strelka::LOCAL_CONFIG_FILE, {} ).
55
+ and_return( config_object )
56
+ expect( config_object ).to receive( :install )
57
+
58
+ Strelka.load_config
59
+ end
60
+
61
+
62
+ it "will load a default config file if none is specified and there's no local config" do
63
+ config_object = double( "Configurability::Config object" )
64
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
65
+
66
+ expect( Configurability ).to receive( :gather_defaults ).
67
+ and_return( {} )
68
+ expect( Strelka::LOCAL_CONFIG_FILE ).to receive( :exist? ).
69
+ and_return( false )
70
+ expect( Configurability::Config ).to receive( :load ).
71
+ with( Strelka::DEFAULT_CONFIG_FILE, {} ).
72
+ and_return( config_object )
73
+ expect( config_object ).to receive( :install )
74
+
75
+ Strelka.load_config
76
+ end
77
+
78
+
79
+ it "will load a config file given in an environment variable" do
80
+ ENV['STRELKA_CONFIG'] = '/usr/local/etc/strelka.yml'
81
+
82
+ config_object = double( "Configurability::Config object" )
83
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
84
+
85
+ expect( Configurability ).to receive( :gather_defaults ).
86
+ and_return( {} )
87
+ expect( Configurability::Config ).to receive( :load ).
88
+ with( '/usr/local/etc/strelka.yml', {} ).
89
+ and_return( config_object )
90
+ expect( config_object ).to receive( :install )
91
+
92
+ Strelka.load_config
93
+ end
94
+
95
+
96
+ it "will load a config file and install it if one is given" do
97
+ config_object = double( "Configurability::Config object" )
98
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
99
+
100
+ expect( Configurability ).to receive( :gather_defaults ).
101
+ and_return( {} )
102
+ expect( Configurability::Config ).to receive( :load ).
103
+ with( 'a/configfile.yml', {} ).
104
+ and_return( config_object )
105
+ expect( config_object ).to receive( :install )
106
+
107
+ Strelka.load_config( 'a/configfile.yml' )
108
+ end
109
+
110
+
111
+ it "will override default values when loading the config if they're given" do
112
+ config_object = double( "Configurability::Config object" )
113
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
114
+
115
+ expect( Configurability ).to_not receive( :gather_defaults )
116
+ expect( Configurability::Config ).to receive( :load ).
117
+ with( 'a/different/configfile.yml', {database: {dbname: 'test'}} ).
118
+ and_return( config_object )
119
+ expect( config_object ).to receive( :install )
120
+
121
+ Strelka.load_config( 'a/different/configfile.yml', database: {dbname: 'test'} )
122
+ end
123
+
124
+
125
+ it "will call any registered callbacks after the config is installed" do
126
+ config_object = double( "Configurability::Config object" )
127
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
128
+
129
+ expect( Configurability ).to receive( :gather_defaults ).
130
+ and_return( {} )
131
+ expect( Configurability::Config ).to receive( :load ).
132
+ with( 'a/configfile.yml', {} ).
133
+ and_return( config_object )
134
+ expect( config_object ).to receive( :install )
135
+
136
+ hook_was_called = false
137
+ Strelka.after_configure do
138
+ hook_was_called = true
139
+ end
140
+ Strelka.load_config( 'a/configfile.yml' )
141
+
142
+ expect( hook_was_called ).to be( true )
20
143
  end
21
144
 
145
+
146
+ it "will immediately call after_config callbacks registered after the config is installed" do
147
+ config_object = double( "Configurability::Config object" )
148
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
149
+
150
+ expect( Configurability ).to receive( :gather_defaults ).
151
+ and_return( {} )
152
+ expect( Configurability::Config ).to receive( :load ).
153
+ with( 'a/configfile.yml', {} ).
154
+ and_return( config_object )
155
+ expect( config_object ).to receive( :install )
156
+
157
+ hook_was_called = false
158
+ Strelka.load_config( 'a/configfile.yml' )
159
+
160
+ Strelka.after_configure do
161
+ hook_was_called = true
162
+ end
163
+
164
+ expect( hook_was_called ).to be( true )
165
+ end
166
+
167
+
168
+ it "can add new after_configure hooks even while the current ones are being run" do
169
+ config_object = double( "Configurability::Config object" )
170
+ allow( config_object ).to receive( :[] ).with( :strelka ).and_return( {} )
171
+
172
+ expect( Configurability ).to receive( :gather_defaults ).
173
+ and_return( {} )
174
+ expect( Configurability::Config ).to receive( :load ).
175
+ with( 'a/configfile.yml', {} ).
176
+ and_return( config_object )
177
+ expect( config_object ).to receive( :install )
178
+
179
+ hook_was_called = false
180
+ Strelka.after_configure do
181
+ Strelka.after_configure do
182
+ hook_was_called = true
183
+ end
184
+ end
185
+
186
+ Strelka.load_config( 'a/configfile.yml' )
187
+
188
+ expect( hook_was_called ).to be( true )
189
+ end
190
+
191
+
22
192
  end
23
193
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strelka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mahlon E. Smith
@@ -11,32 +11,31 @@ bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQsFADA+MQwwCgYDVQQDDANnZWQx
15
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- FI0PJ4y5I8buU4IZGUD5NEt/N7pZNfOyBxkrZkXhS44Fp+xwBH5ebLbq/WY78Bqd
31
- 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
- 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
- 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
- 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
- 6Von1VDsfQm0eJh5zYZD64ZF86phSR7mUX3mXItwH04HrZwkWpvgd871DZVR3i1n
36
- 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
- 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
36
+ JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
38
37
  -----END CERTIFICATE-----
39
- date: 2017-06-14 00:00:00.000000000 Z
38
+ date: 2019-08-15 00:00:00.000000000 Z
40
39
  dependencies:
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: configurability
@@ -114,14 +113,14 @@ dependencies:
114
113
  requirements:
115
114
  - - "~>"
116
115
  - !ruby/object:Gem::Version
117
- version: '0.44'
116
+ version: '0.53'
118
117
  type: :runtime
119
118
  prerelease: false
120
119
  version_requirements: !ruby/object:Gem::Requirement
121
120
  requirements:
122
121
  - - "~>"
123
122
  - !ruby/object:Gem::Version
124
- version: '0.44'
123
+ version: '0.53'
125
124
  - !ruby/object:Gem::Dependency
126
125
  name: pluggability
127
126
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +211,14 @@ dependencies:
212
211
  requirements:
213
212
  - - "~>"
214
213
  - !ruby/object:Gem::Version
215
- version: '0.9'
214
+ version: '0.10'
216
215
  type: :development
217
216
  prerelease: false
218
217
  version_requirements: !ruby/object:Gem::Requirement
219
218
  requirements:
220
219
  - - "~>"
221
220
  - !ruby/object:Gem::Version
222
- version: '0.9'
221
+ version: '0.10'
223
222
  - !ruby/object:Gem::Dependency
224
223
  name: hoe-highline
225
224
  requirement: !ruby/object:Gem::Requirement
@@ -280,30 +279,36 @@ dependencies:
280
279
  name: rdoc
281
280
  requirement: !ruby/object:Gem::Requirement
282
281
  requirements:
283
- - - "~>"
282
+ - - ">="
284
283
  - !ruby/object:Gem::Version
285
284
  version: '4.0'
285
+ - - "<"
286
+ - !ruby/object:Gem::Version
287
+ version: '7'
286
288
  type: :development
287
289
  prerelease: false
288
290
  version_requirements: !ruby/object:Gem::Requirement
289
291
  requirements:
290
- - - "~>"
292
+ - - ">="
291
293
  - !ruby/object:Gem::Version
292
294
  version: '4.0'
295
+ - - "<"
296
+ - !ruby/object:Gem::Version
297
+ version: '7'
293
298
  - !ruby/object:Gem::Dependency
294
299
  name: hoe
295
300
  requirement: !ruby/object:Gem::Requirement
296
301
  requirements:
297
302
  - - "~>"
298
303
  - !ruby/object:Gem::Version
299
- version: '3.16'
304
+ version: '3.18'
300
305
  type: :development
301
306
  prerelease: false
302
307
  version_requirements: !ruby/object:Gem::Requirement
303
308
  requirements:
304
309
  - - "~>"
305
310
  - !ruby/object:Gem::Version
306
- version: '3.16'
311
+ version: '3.18'
307
312
  description: |-
308
313
  Strelka is a framework for creating and deploying
309
314
  Mongrel2[http://mongrel2.org/] web applications in Ruby.
@@ -413,6 +418,7 @@ files:
413
418
  - lib/strelka/session/default.rb
414
419
  - lib/strelka/testing.rb
415
420
  - lib/strelka/websocketserver.rb
421
+ - lib/strelka/websocketserver/heartbeat.rb
416
422
  - lib/strelka/websocketserver/routing.rb
417
423
  - spec/constants.rb
418
424
  - spec/data/error.tmpl
@@ -464,6 +470,8 @@ files:
464
470
  - spec/strelka/session/db_spec.rb
465
471
  - spec/strelka/session/default_spec.rb
466
472
  - spec/strelka/session_spec.rb
473
+ - spec/strelka/testing_spec.rb
474
+ - spec/strelka/websocketserver/heartbeat_spec.rb
467
475
  - spec/strelka/websocketserver/routing_spec.rb
468
476
  - spec/strelka/websocketserver_spec.rb
469
477
  - spec/strelka_spec.rb
@@ -488,8 +496,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
488
496
  - !ruby/object:Gem::Version
489
497
  version: '0'
490
498
  requirements: []
491
- rubyforge_project:
492
- rubygems_version: 2.6.12
499
+ rubygems_version: 3.0.3
493
500
  signing_key:
494
501
  specification_version: 4
495
502
  summary: Strelka is a framework for creating and deploying Mongrel2[http://mongrel2.org/]
metadata.gz.sig CHANGED
Binary file