hostrich 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa4e3e96a9692ca3bb53ce5408f139c9ed51f1a1
4
- data.tar.gz: 170021e024e461c62dd02cf61039dfa3d73af6a7
3
+ metadata.gz: 87645430ed5a8510784bfb5faf7ec6d484eefeee
4
+ data.tar.gz: 491fba7c08cd85e0dca1c853b9beeff24ff28e70
5
5
  SHA512:
6
- metadata.gz: a95b457cdde2b09f7bef015fd933e6751b23fcc787bcb53c22520b40f6ce7335b41ac70a2e7e8b2c172c50aa2e075e72e54ded9465722a7992a2dd5f2960b83d
7
- data.tar.gz: 86ce4fc2137a9869261c939db61e6c81656f59f15a7a8c2f268a9135666463155ec95c5a6c4d4c54def716797fd191508586e961bcd7dff35fdc88548fd2ea96
6
+ metadata.gz: 1e28112181156877df78b420a3a6da154c6112863b5b2bba6f9845815eb7a9abf09b07ae4955d4e15ebeb9db86e1f1b0db8e61ea4fa6550a4e39cb4fd519ebac
7
+ data.tar.gz: 795a8bd7a1d1bf2f25a4010ca1ebe7421fc609cb0bfb3533650c26c402d551415a2047cdca64d6666969a7f2d2c4378c60993961d1ea9702dc75f628a4db0d44
@@ -1,3 +1,3 @@
1
1
  class Hostrich
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/hostrich.rb CHANGED
@@ -23,7 +23,11 @@ class Hostrich
23
23
 
24
24
  # Extract suffix from current request host.
25
25
  match = nil
26
- @@hosts.detect { |host| match = env['HTTP_HOST'].match(/#{host}(\.[\.\w-]+)?/) }
26
+ @@hosts.detect { |host|
27
+ if http_host = env['HTTP_HOST']
28
+ match = http_host.match(/#{host}(\.[\.\w-]+)?/)
29
+ end
30
+ }
27
31
  return @app.call(env) if match.nil?
28
32
 
29
33
  suffix = match[1]
@@ -10,53 +10,65 @@ describe Hostrich do
10
10
  when '/redirect'
11
11
  [302, { 'Location' => 'http://foo.com/index.html' }, []]
12
12
  when '/cookie'
13
- [200, { 'Set-Cookie' => 'some_param=foo.com/index.html; Path=/; Domain=.foo.com' }, ['Cookie!']]
13
+ [200, { 'Set-Cookie' => 'some_param=foo.com/index.html; Path=/; Domain=.foo.bar.io' }, ['Cookie!']]
14
14
  when '/version.rb'
15
15
  Rack::File.new('lib/hostrich').call(env)
16
16
  else
17
- [200, {}, ['Welcome to foo.com or foo.com.dev, not foo.comzle, not ffoo.com and not bar.io']]
17
+ [200, {}, ['Welcome to foo.com, foo.com.dev or foo.bar.io, not foo.comzle, not ffoo.com and not bar.io']]
18
18
  end
19
19
  }
20
20
  }
21
21
  let(:request) { Rack::MockRequest.new(stack) }
22
22
 
23
- shared_examples 'the whole deal' do
24
- it 'adds host suffix in response body' do
25
- response = request.get('/', 'HTTP_HOST' => 'foo.com.dev')
26
- expect(response.body).to eq 'Welcome to foo.com.dev or foo.com.dev, not foo.comzle, not ffoo.com and not bar.io'
27
- end
28
-
23
+ shared_examples 'adds suffix to single host' do
29
24
  it 'adds host suffix in response headers' do
30
25
  response = request.get('/redirect', 'HTTP_HOST' => 'foo.com.dev')
31
26
  expect(response.headers['Location']).to eq 'http://foo.com.dev/index.html'
32
27
 
33
28
  response = request.get('/cookie', 'HTTP_HOST' => 'foo.com.dev')
34
- expect(response.headers['Set-Cookie']).to eq 'some_param=foo.com.dev/index.html; Path=/; Domain=.foo.com.dev'
29
+ expect(response.headers['Set-Cookie']).to eq 'some_param=foo.com.dev/index.html; Path=/; Domain=.foo.bar.io'
35
30
  end
36
31
 
37
32
  it 'works with Rack::File' do
38
33
  response = request.get('/version.rb', 'HTTP_HOST' => 'foo.com.dev')
39
34
  expect(response.body).to include "class Hostrich\n VERSION"
40
35
  end
36
+
37
+ it 'adds host suffix in response body' do
38
+ response = request.get('/', 'HTTP_HOST' => 'foo.com.dev')
39
+ expect(response.body).to eq 'Welcome to foo.com.dev, foo.com.dev or foo.bar.io, not foo.comzle, not ffoo.com and not bar.io'
40
+ end
41
+
42
+ it 'processes request successfully if no HTTP_HOST present' do
43
+ response = request.get('/')
44
+ expect(response.body).to eq 'Welcome to foo.com, foo.com.dev or foo.bar.io, not foo.comzle, not ffoo.com and not bar.io'
45
+ end
41
46
  end
42
47
 
43
48
  context 'passing host as a string' do
44
49
  let(:stack) { Hostrich.new(app, 'foo.com') }
45
- it_behaves_like 'the whole deal'
50
+ include_examples 'adds suffix to single host'
46
51
  end
47
52
 
48
53
  context 'passing host as an array' do
49
54
  let(:stack) { Hostrich.new(app, ['foo.com']) }
50
- it_behaves_like 'the whole deal'
55
+ include_examples 'adds suffix to single host'
51
56
  end
52
57
 
53
58
  context 'passing multiple hosts as an array' do
54
59
  let(:stack) { Hostrich.new(app, %w[foo.com foo.bar.io]) }
55
- it_behaves_like 'the whole deal'
56
60
 
57
- it 'adds host suffix for all hosts' do
61
+ it 'adds host suffix to multiple hosts in response headers' do
62
+ response = request.get('/redirect', 'HTTP_HOST' => 'foo.com.dev')
63
+ expect(response.headers['Location']).to eq 'http://foo.com.dev/index.html'
64
+
65
+ response = request.get('/cookie', 'HTTP_HOST' => 'foo.com.dev')
66
+ expect(response.headers['Set-Cookie']).to eq 'some_param=foo.com.dev/index.html; Path=/; Domain=.foo.bar.io.dev'
67
+ end
68
+
69
+ it 'adds host suffix to multiple hosts in response body' do
58
70
  response = request.get('/', 'HTTP_HOST' => 'foo.com.127.0.0.1.xip.io')
59
- expect(response.body).to eq 'Welcome to foo.com.127.0.0.1.xip.io or foo.com.127.0.0.1.xip.io.dev, not foo.comzle, not ffoo.com and not bar.io'
71
+ expect(response.body).to eq 'Welcome to foo.com.127.0.0.1.xip.io, foo.com.127.0.0.1.xip.io.dev or foo.bar.io.127.0.0.1.xip.io, not foo.comzle, not ffoo.com and not bar.io'
60
72
  end
61
73
  end
62
74
 
@@ -65,12 +77,12 @@ describe Hostrich do
65
77
 
66
78
  it 'does nothing' do
67
79
  response = request.get('/', 'HTTP_HOST' => 'foo.com.dev')
68
- expect(response.body).to eq 'Welcome to foo.com or foo.com.dev, not foo.comzle, not ffoo.com and not bar.io'
80
+ expect(response.body).to eq 'Welcome to foo.com, foo.com.dev or foo.bar.io, not foo.comzle, not ffoo.com and not bar.io'
69
81
  end
70
82
 
71
83
  context 'adding hosts after initialization' do
72
84
  before { Hostrich.hosts += ['foo.com'] }
73
- it_behaves_like 'the whole deal'
85
+ include_examples 'adds suffix to single host'
74
86
  end
75
87
  end
76
88
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hostrich
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafaël Blais Masson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-28 00:00:00.000000000 Z
11
+ date: 2015-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack