registrar 0.1.1 → 0.2

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: a25b22e6152db7324fd77fe314456f0712b3307c
4
- data.tar.gz: bdabcd14909f9a8c52a30281b348f26479bc5e39
3
+ metadata.gz: aea36c6ffc82208ace8e3d29c4f68bbdb256532f
4
+ data.tar.gz: 9a5ff1921848ac3abef563fcc4da7355a1c856de
5
5
  SHA512:
6
- metadata.gz: 39cca0acf4f69843cc945e83a3414ccd6b5c4ca3a1834d4a3123ecceaa53c8a7d84ef289c586ed7bca6f9a7af41035c7960164eeebd7bc84833e2a6d5b374d02
7
- data.tar.gz: be78150a414142ae34a14799f5a34e78f968294e2e48b49d484520b6f233b8e6b4ecdfd24ae1a9879fd1cc3a9c527c973613a9a2de25d076217f6303bc1416ff
6
+ metadata.gz: de3e2f7d3633a230a150f389fad514181f453f773648d1e738cf5cb4769a9715f6229a154ddf6d448942667a3d19d59badbdf9b4c4b9aa606cefe098c23d9409
7
+ data.tar.gz: ef54cf222736dd0e882a4014114653adb017a0cbdf2d22644b7dd876c3f850466ea110b0430396d2d7109928e716915303a4c89f2e1483159a32a54ed3d4f631
@@ -99,7 +99,14 @@ module Registrar
99
99
  end
100
100
 
101
101
  def ip
102
- env['HTTP_CLIENT_IP'] || env['HTTP_X_REMOTE_ADDR'] || env['REMOTE_ADDR']
102
+ action_dispatch_remote_ip || env['HTTP_CLIENT_IP'] ||
103
+ env['HTTP_X_REMOTE_ADDR'] || env['REMOTE_ADDR']
104
+ end
105
+
106
+ def action_dispatch_remote_ip
107
+ if remote_ip = env['action_dispatch.remote_ip']
108
+ remote_ip.to_s
109
+ end
103
110
  end
104
111
 
105
112
  def user_agent
@@ -1,3 +1,3 @@
1
1
  module Registrar
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2"
3
3
  end
@@ -2,11 +2,45 @@ require 'spec_helper'
2
2
  require 'omniauth'
3
3
 
4
4
  class OmniAuthAuthBuilderSpec < Spec
5
+ let(:passed_env) { Hash.new }
6
+
5
7
  it 'normalizes OmniAuth Auth Hash Schema 1.0 and later' do
6
- get '/'
8
+ passed_env['HTTP_USER_AGENT'] = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"
9
+ passed_env['REMOTE_ADDR'] = "127.0.0.2"
10
+ passed_env['X-Locale'] = 'fr'
11
+
12
+ get '/', nil, passed_env
7
13
  assert_normalizes_auth env
8
14
  end
9
15
 
16
+ it 'prefers HTTP_X_REMOTE_ADDR over REMOTE_ADDR' do
17
+ passed_env['REMOTE_ADDR'] = '127.0.0.2'
18
+ passed_env['HTTP_X_REMOTE_ADDR'] = '127.0.0.3'
19
+
20
+ get '/', nil, passed_env
21
+
22
+ assert_equal passed_env['HTTP_X_REMOTE_ADDR'], traced['ip']
23
+ end
24
+
25
+ it 'prefers HTTP_CLIENT_IP over HTTP_X_REMOTE_ADDR' do
26
+ passed_env['HTTP_X_REMOTE_ADDR'] = '127.0.0.3'
27
+ passed_env['HTTP_CLIENT_IP'] = '127.0.0.4'
28
+
29
+ get '/', nil, passed_env
30
+
31
+ assert_equal passed_env['HTTP_CLIENT_IP'], traced['ip']
32
+ end
33
+
34
+ it 'prefers action_dispatch.remote_ip in env over HTTP_CLIENT_IP' do
35
+ remote_ip = RemoteIpFake.new("127.0.0.5")
36
+ passed_env['action_dispatch.remote_ip'] = remote_ip
37
+ passed_env['HTTP_CLIENT_IP'] = '127.0.0.4'
38
+
39
+ get '/', nil, passed_env
40
+
41
+ assert_equal "127.0.0.5", traced['ip']
42
+ end
43
+
10
44
  private
11
45
 
12
46
  def assert_normalizes_auth(env)
@@ -61,17 +95,8 @@ class OmniAuthAuthBuilderSpec < Spec
61
95
  builder.to_app
62
96
  end
63
97
 
64
- class TraceStub
65
- def initialize(app)
66
- @app = app
67
- end
68
-
69
- def call(env)
70
- env['X-Locale'] = 'fr'
71
- env['HTTP_USER_AGENT'] = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"
72
- env['REMOTE_ADDR'] = "127.0.0.2"
73
- @app.call(env)
74
- end
98
+ def traced
99
+ env['registrar.auth']['trace']
75
100
  end
76
101
 
77
102
  class TimeStub
@@ -80,18 +105,6 @@ class OmniAuthAuthBuilderSpec < Spec
80
105
  end
81
106
  end
82
107
 
83
- def env
84
- last_request.env
85
- end
86
-
87
- def response
88
- last_response
89
- end
90
-
91
- def app
92
- @app ||= build_app
93
- end
94
-
95
108
  class OmniAuthFacebookStub
96
109
  def initialize(app)
97
110
  @app = app
@@ -121,9 +134,14 @@ class OmniAuthAuthBuilderSpec < Spec
121
134
  end
122
135
  end
123
136
 
137
+ class RemoteIpFake < Struct.new(:ip)
138
+ def to_s
139
+ ip
140
+ end
141
+ end
142
+
124
143
  def builder
125
144
  Rack::Builder.new do
126
- use TraceStub
127
145
  use OmniAuthFacebookStub
128
146
 
129
147
  use Registrar::AuthBuilder::OmniAuth, TimeStub.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: registrar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Owiesniak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-14 00:00:00.000000000 Z
11
+ date: 2016-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth