sitehub 0.5.0.alpha11 → 0.5.0.alpha12

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: 673473acf603cd4bb059ba39942acd23c298805a
4
- data.tar.gz: d0ac444795bfd73878698d243f16718045b86e15
3
+ metadata.gz: 5960551a37d7e1dcc81e5c1f1e785874e93e98ed
4
+ data.tar.gz: fce52d9ba323bd271d8164fef30ff61736bd698e
5
5
  SHA512:
6
- metadata.gz: 79508cdd923756cea548c2c62fd7f94ff27046d30961dfe81c30e0f401037939ab83539a8ac44e6720a5c6e31b767675426bf7292781b9d793867ee651bb4776
7
- data.tar.gz: 768aef4bbde59e3378a98197f01e37ad901314375359dbeb324c60b53de91bf263414037f72027c909910f827856b89b116be3050efe0b3474cba4a69ef92625
6
+ metadata.gz: f61bbdaa2cb7bca2a6b4974cb0ea962b6076a7236c39b7e75e7f7959e98cbc463c18c97f06acf4216145aebeee7a139ccf0b730162fcc132654210f63ec8e816
7
+ data.tar.gz: e7d8c1ec72fae39c13fc47613d0558d478c74d7bb457bba43ca1c8ad70a4ed3cb3b811283d2f3eb4d5beada7b4ac7f2ee537f8a3329dfae97bbf0aa54f6d2e5e
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sitehub (0.5.0.alpha11)
4
+ sitehub (0.5.0.alpha12)
5
5
  activesupport
6
6
  em-http-request
7
7
  em-synchrony
8
8
  faraday
9
- rack
9
+ rack (~> 1.6.8)
10
10
  rack-fiber_pool
11
11
  rack-ssl-enforcer
12
12
  thin
@@ -15,7 +15,7 @@ PATH
15
15
  GEM
16
16
  remote: https://rubygems.org/
17
17
  specs:
18
- activesupport (5.0.0)
18
+ activesupport (5.1.4)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (~> 0.7)
21
21
  minitest (~> 5.1)
@@ -33,11 +33,11 @@ GEM
33
33
  simplecov (>= 0.7.1, < 1.0.0)
34
34
  coercible (1.0.0)
35
35
  descendants_tracker (~> 0.0.1)
36
- concurrent-ruby (1.0.2)
36
+ concurrent-ruby (1.0.5)
37
37
  cookiejar (0.3.3)
38
38
  crack (0.4.3)
39
39
  safe_yaml (~> 1.0.0)
40
- daemons (1.2.4)
40
+ daemons (1.2.6)
41
41
  descendants_tracker (0.0.4)
42
42
  thread_safe (~> 0.3, >= 0.3.1)
43
43
  diff-lcs (1.2.5)
@@ -50,10 +50,10 @@ GEM
50
50
  http_parser.rb (>= 0.6.0)
51
51
  em-socksify (0.3.1)
52
52
  eventmachine (>= 1.0.0.beta.4)
53
- em-synchrony (1.0.5)
53
+ em-synchrony (1.0.6)
54
54
  eventmachine (>= 1.0.0.beta.1)
55
55
  equalizer (0.0.11)
56
- eventmachine (1.2.0.1)
56
+ eventmachine (1.2.5)
57
57
  faraday (0.9.2)
58
58
  multipart-post (>= 1.2, < 3)
59
59
  geminabox (0.13.1)
@@ -65,19 +65,20 @@ GEM
65
65
  hashdiff (0.3.0)
66
66
  http_parser.rb (0.6.0)
67
67
  httpclient (2.8.0)
68
- i18n (0.7.0)
68
+ i18n (0.9.1)
69
+ concurrent-ruby (~> 1.0)
69
70
  ice_nine (0.11.2)
70
71
  json (1.8.3)
71
72
  macaddr (1.7.1)
72
73
  systemu (~> 2.6.2)
73
74
  memory_profiler (0.9.6)
74
- minitest (5.9.0)
75
+ minitest (5.10.3)
75
76
  multipart-post (2.0.0)
76
77
  nesty (1.0.2)
77
78
  parser (2.3.1.2)
78
79
  ast (~> 2.2)
79
80
  powerpack (0.1.1)
80
- rack (1.6.4)
81
+ rack (1.6.8)
81
82
  rack-fiber_pool (0.9.3)
82
83
  rack-protection (1.5.3)
83
84
  rack
@@ -122,14 +123,14 @@ GEM
122
123
  rack-protection (~> 1.4)
123
124
  tilt (>= 1.3, < 3)
124
125
  systemu (2.6.5)
125
- thin (1.7.0)
126
+ thin (1.7.2)
126
127
  daemons (~> 1.0, >= 1.0.9)
127
128
  eventmachine (~> 1.0, >= 1.0.4)
128
129
  rack (>= 1, < 3)
129
130
  thread_safe (0.3.5)
130
131
  tilt (2.0.5)
131
132
  timecop (0.8.1)
132
- tzinfo (1.2.2)
133
+ tzinfo (1.2.4)
133
134
  thread_safe (~> 0.1)
134
135
  unicode-display_width (1.0.5)
135
136
  uuid (2.3.8)
@@ -14,6 +14,13 @@ require_relative 'forward_proxy'
14
14
  require_relative 'downstream_client'
15
15
 
16
16
  class SiteHub
17
+ class TrackingCookieDefinition
18
+ attr_reader :name, :path
19
+ def initialize(name, path = nil)
20
+ @name = name
21
+ @path = path
22
+ end
23
+ end
17
24
  class CandidateRoutes
18
25
  class InvalidDefinitionError < StandardError
19
26
  end
@@ -55,11 +62,12 @@ class SiteHub
55
62
  self
56
63
  end
57
64
 
58
- def candidates(collection = nil)
59
- return @endpoints ||= Collection::RouteCollection.new unless collection
65
+ def candidates(clazz = nil)
66
+ return @endpoints ||= Collection::RouteCollection.new unless clazz
67
+ @endpoints ||= clazz.new
60
68
 
61
- raise InvalidDefinitionError, ROUTES_WITH_SPLITS_MSG if @endpoints && !@endpoints.equal?(collection)
62
- @endpoints = collection
69
+ raise InvalidDefinitionError, ROUTES_WITH_SPLITS_MSG unless @endpoints.is_a?(clazz)
70
+ @endpoints
63
71
  end
64
72
 
65
73
  def default(url:)
@@ -86,20 +94,18 @@ class SiteHub
86
94
  end
87
95
 
88
96
  # TODO: combine cookie name and path in to an : nobject
89
- def initialize(id: nil, sitehub_cookie_name:, sitehub_cookie_path: nil, mapped_path:, rule: nil, &block)
97
+ def initialize(id: nil, version_cookie:, mapped_path:, rule: nil, &block)
90
98
  @id = Identifier.new(id)
91
99
 
92
100
  @mapped_path = sanitise_mapped_path(mapped_path)
93
- @sitehub_cookie_name = sitehub_cookie_name
94
- @sitehub_cookie_path = sitehub_cookie_path
101
+ sitehub_cookie_name(version_cookie.name)
102
+ sitehub_cookie_path(version_cookie.path)
95
103
 
96
104
  rule(rule)
97
105
 
98
106
  init(&block) if block_given?
99
107
  end
100
108
 
101
-
102
-
103
109
  def resolve(id: nil, env:)
104
110
  id = Identifier.new(id)
105
111
  if id.valid? && (route = candidates[id.root])
@@ -110,14 +116,12 @@ class SiteHub
110
116
  end
111
117
 
112
118
  def route(url: nil, label:, rule: nil, &block)
113
- @routes ||= Collection::RouteCollection.new
114
- candidates(@routes)
119
+ candidates(Collection::RouteCollection)
115
120
  add(label: label, rule: rule, url: url, &block)
116
121
  end
117
122
 
118
123
  def split(percentage:, url: nil, label:, &block)
119
- @splits ||= Collection::SplitRouteCollection.new
120
- candidates(@splits)
124
+ candidates(Collection::SplitRouteCollection)
121
125
  add(label: label, percentage: percentage, url: url, &block)
122
126
  end
123
127
 
@@ -175,8 +179,7 @@ class SiteHub
175
179
  inherited_middleware = middlewares
176
180
 
177
181
  self.class.new(id: id,
178
- sitehub_cookie_name: sitehub_cookie_name,
179
- sitehub_cookie_path: sitehub_cookie_path,
182
+ version_cookie: TrackingCookieDefinition.new(sitehub_cookie_name, sitehub_cookie_path),
180
183
  mapped_path: mapped_path,
181
184
  rule: rule) do
182
185
  middlewares.concat(inherited_middleware)
@@ -1,10 +1,9 @@
1
1
  class SiteHub
2
2
  class CandidateRoutes
3
-
4
3
  module FromJson
5
4
  extend CollectionMethods
6
5
 
7
- def self.extended clazz
6
+ def self.extended(clazz)
8
7
  clazz.class_eval do
9
8
  include InstanceMethods
10
9
  end
@@ -14,8 +13,7 @@ class SiteHub
14
13
  def from_hash(hash, sitehub_cookie_name, sitehub_cookie_path)
15
14
  cookie_path = hash[:sitehub_cookie_path] || sitehub_cookie_path
16
15
  cookie_name = hash[:sitehub_cookie_name] || sitehub_cookie_name
17
- new(sitehub_cookie_name: cookie_name,
18
- sitehub_cookie_path: cookie_path,
16
+ new(version_cookie: TrackingCookieDefinition.new(cookie_name, cookie_path),
19
17
  mapped_path: hash[:path]) do
20
18
  handle_routes(hash, self)
21
19
  default url: hash[:default] if hash[:default]
@@ -24,6 +22,7 @@ class SiteHub
24
22
 
25
23
  module InstanceMethods
26
24
  private
25
+
27
26
  def handle_routes(hash, routes)
28
27
  extract_splits(hash, routes)
29
28
  extract_routes(hash, routes)
@@ -42,13 +41,12 @@ class SiteHub
42
41
  cookie_name = split[:sitehub_cookie_name] || sitehub_cookie_name
43
42
 
44
43
  if split[:splits] || split[:routes]
45
- routes.split(percentage: percentage, label: label) { handle_routes(split, self) }
44
+ routes.split(percentage: percentage, label: label) { handle_routes(split, self) }
46
45
  else
47
46
  routes.split(percentage: percentage, label: label, url: split[:url])
48
47
  end
49
48
  end
50
49
  end
51
-
52
50
  end
53
51
  end
54
52
  end
@@ -7,7 +7,7 @@ class SiteHub
7
7
  RESPONSE = 'sitehub.response'.freeze
8
8
  ASYNC_CALLBACK = 'async.callback'.freeze
9
9
  RECORDED_ROUTES_COOKIE = 'sitehub.recorded_route'.freeze
10
- RECORDED_ROUTE_COOKIE_PATH = '/'.freeze
10
+ RECORDED_ROUTES_COOKIE_PATH = '/'.freeze
11
11
  ERRORS = 'sitehub.errors'.freeze
12
12
  TIME_STAMP_FORMAT = '%d/%b/%Y:%H:%M:%S %z'.freeze
13
13
  EMPTY_STRING = ''.freeze
data/lib/sitehub/core.rb CHANGED
@@ -19,7 +19,7 @@ class SiteHub
19
19
  sitehub_cookie_path config[:sitehub_cookie_path] if config[:sitehub_cookie_path]
20
20
 
21
21
  collection!(config, :proxies).each do |proxy|
22
- mappings.add_route candidate_routes: CandidateRoutes.from_hash(proxy, sitehub_cookie_name, sitehub_cookie_path )
22
+ mappings.add_route candidate_routes: CandidateRoutes.from_hash(proxy, sitehub_cookie_name, sitehub_cookie_path)
23
23
  end
24
24
 
25
25
  collection(config, :reverse_proxies).each do |proxy|
@@ -14,7 +14,7 @@ class SiteHub
14
14
  include Equality
15
15
 
16
16
  extend GetterSetterMethods
17
- getter_setter :sitehub_cookie_path, RECORDED_ROUTE_COOKIE_PATH
17
+ getter_setter :sitehub_cookie_path, RECORDED_ROUTES_COOKIE_PATH
18
18
  getter_setter :sitehub_cookie_name, RECORDED_ROUTES_COOKIE
19
19
 
20
20
  def initialize
@@ -36,7 +36,7 @@ class SiteHub
36
36
 
37
37
  def add_route(url: nil, mapped_path: nil, candidate_routes: nil, &block)
38
38
  unless candidate_routes
39
- candidate_routes = CandidateRoutes.new(sitehub_cookie_name: sitehub_cookie_name,
39
+ candidate_routes = CandidateRoutes.new(version_cookie: TrackingCookieDefinition.new(sitehub_cookie_name),
40
40
  mapped_path: mapped_path,
41
41
  &block).tap do |builder|
42
42
  builder.default(url: url) if url
@@ -1,3 +1,3 @@
1
1
  class SiteHub
2
- VERSION = '0.5.0.alpha11'.freeze
2
+ VERSION = '0.5.0.alpha12'.freeze
3
3
  end
data/sitehub.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(spec)/*.rb})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'rack'
21
+ spec.add_dependency 'rack', '~> 1.6.8'
22
22
  spec.add_dependency 'uuid'
23
23
  spec.add_dependency 'em-http-request'
24
24
  spec.add_dependency 'rack-ssl-enforcer'
@@ -4,14 +4,14 @@ describe 'config server' do
4
4
 
5
5
  let(:config) do
6
6
  {
7
- proxies: [
8
- {
9
- sitehub_cookie_name: 'custom_name',
10
- sitehub_cookie_path: '/custom/path',
11
- path: '%r{/regex(.*)}',
12
- default: DOWNSTREAM_URL
13
- }
14
- ]
7
+ proxies: [
8
+ {
9
+ sitehub_cookie_name: 'custom_name',
10
+ sitehub_cookie_path: '/custom/path',
11
+ path: '%r{/regex(.*)}',
12
+ default: DOWNSTREAM_URL
13
+ }
14
+ ]
15
15
  }
16
16
  end
17
17
 
@@ -24,7 +24,7 @@ describe 'config server' do
24
24
 
25
25
  let(:app) do
26
26
  sitehub = sitehub do
27
- config_server(CONFIG_SERVER_URL, caching_options: {expires_in: 1})
27
+ config_server(CONFIG_SERVER_URL, caching_options: { expires_in: 1 })
28
28
  end
29
29
 
30
30
  Async::Middleware.new(sitehub)
@@ -5,46 +5,42 @@ class SiteHub
5
5
  include_context :sitehub_json
6
6
 
7
7
  let(:described_class) { CandidateRoutes }
8
+ subject { described_class.from_hash(proxy_config, :top_level_cookie_name, :top_level_cookie_path) }
8
9
 
9
10
  context 'cookie configuration' do
10
-
11
- subject do
12
- described_class.from_hash(proxy_config_hash, :top_level_cookie_name, :top_level_cookie_path)
13
- end
14
-
15
11
  let(:cookie_name) { 'custom_name' }
16
12
  let(:cookie_path) { 'custom_path' }
17
13
 
18
14
  context 'no config defined on proxy' do
19
-
20
- let(:proxy_config_hash) do
15
+ let(:proxy_config) do
21
16
  {
22
- path: '/',
23
- default: 'url'
17
+ path: '/',
18
+ default: 'url'
24
19
  }
25
20
  end
26
21
 
27
22
  it 'uses the config passed in to the method' do
28
- expect(subject.default_route.sitehub_cookie_name).to eq(:top_level_cookie_name)
29
- expect(subject.default_route.sitehub_cookie_path).to eq(:top_level_cookie_path)
23
+ expect(subject.default_route.sitehub_cookie_name).to eq(:top_level_cookie_name)
24
+ expect(subject.default_route.sitehub_cookie_path).to eq(:top_level_cookie_path)
30
25
  end
31
26
  end
32
- context 'defined on proxy' do
33
27
 
34
- let(:proxy_config_hash) do
28
+ context 'defined on proxy' do
29
+ let(:proxy_config) do
35
30
  {
36
- path: '/',
37
- sitehub_cookie_name: cookie_name,
38
- sitehub_cookie_path: cookie_path,
39
- default: 'url'
31
+ path: '/',
32
+ sitehub_cookie_name: cookie_name,
33
+ sitehub_cookie_path: cookie_path,
34
+ default: 'url'
40
35
  }
41
36
  end
37
+
42
38
  it 'uses the configuration' do
43
39
  expect(subject.default_route.sitehub_cookie_name).to eq(cookie_name)
44
40
  expect(subject.default_route.sitehub_cookie_path).to eq(cookie_path)
45
41
  end
46
42
 
47
- #TODO - support cookie config within split
43
+ # TODO: - support cookie config within split
48
44
  # context 'config defined on split' do
49
45
  # let(:proxy_config_hash) do
50
46
  # {
@@ -65,22 +61,19 @@ class SiteHub
65
61
  # end
66
62
  end
67
63
 
68
- #TODO - support cookie config within split
64
+ # TODO: - support cookie config within split
69
65
  context 'defined on route' do
70
66
  it 'uses the configuration' do
71
-
72
67
  end
73
68
  end
74
69
  end
75
70
 
76
-
77
71
  context 'splits' do
78
- subject do
79
- described_class.from_hash(split_proxy, :expected, :top_level_cookie_path)
80
- end
72
+ let(:proxy_config) { split_proxy }
73
+
81
74
  context 'sitehub_cookie_name' do
82
75
  it 'sets it' do
83
- expect(subject.sitehub_cookie_name).to eq(:expected)
76
+ expect(subject.sitehub_cookie_name).to eq(:top_level_cookie_name)
84
77
  end
85
78
  end
86
79
 
@@ -93,8 +86,7 @@ class SiteHub
93
86
  it 'returns core with splits' do
94
87
  split_1 = split_1()
95
88
  split_2 = split_2()
96
- expected = described_class.new(sitehub_cookie_name: :expected,
97
- sitehub_cookie_path: subject.sitehub_cookie_path,
89
+ expected = described_class.new(version_cookie: TrackingCookieDefinition.new(:top_level_cookie_name, subject.sitehub_cookie_path),
98
90
  mapped_path: subject.mapped_path) do
99
91
  split percentage: split_1[:percentage], label: split_1[:label], url: split_1[:url]
100
92
  split percentage: split_2[:percentage], label: split_2[:label], url: split_2[:url]
@@ -110,12 +102,11 @@ class SiteHub
110
102
  end
111
103
 
112
104
  context 'routes' do
113
- subject do
114
- described_class.from_hash(routes_proxy, :expected, :top_level_cookie_path)
115
- end
105
+ let(:proxy_config) { routes_proxy }
106
+
116
107
  context 'sitehub_cookie_name' do
117
108
  it 'sets it' do
118
- expect(subject.sitehub_cookie_name).to eq(:expected)
109
+ expect(subject.sitehub_cookie_name).to eq(:top_level_cookie_name)
119
110
  end
120
111
  end
121
112
 
@@ -127,8 +118,7 @@ class SiteHub
127
118
 
128
119
  it 'returns core with routes' do
129
120
  route_1 = route_1()
130
- expected = described_class.new(sitehub_cookie_name: :expected,
131
- sitehub_cookie_path: subject.sitehub_cookie_path,
121
+ expected = described_class.new(version_cookie: TrackingCookieDefinition.new(:top_level_cookie_name, subject.sitehub_cookie_path),
132
122
  mapped_path: subject.mapped_path) do
133
123
  route label: route_1[:label], url: route_1[:url]
134
124
  end
@@ -144,16 +134,12 @@ class SiteHub
144
134
 
145
135
  context 'nested routes' do
146
136
  context 'routes inside a split' do
147
- subject do
148
- described_class.from_hash(nested_route_proxy, :expected, :top_level_cookie_path)
149
- end
150
-
137
+ let(:proxy_config) { nested_route_proxy }
151
138
  it 'creates them' do
152
139
  route_1 = route_1()
153
140
  nested_route = nested_route()
154
141
 
155
- expected = described_class.new(sitehub_cookie_name: :expected,
156
- sitehub_cookie_path: subject.sitehub_cookie_path,
142
+ expected = described_class.new(version_cookie: TrackingCookieDefinition.new(:top_level_cookie_name, subject.sitehub_cookie_path),
157
143
  mapped_path: subject.mapped_path) do
158
144
  split(percentage: nested_route[:percentage], label: nested_route[:label]) do
159
145
  route label: route_1[:label], url: route_1[:url]
@@ -164,17 +150,14 @@ class SiteHub
164
150
  end
165
151
 
166
152
  context 'splits in a split' do
167
- subject do
168
- described_class.from_hash(nested_split_proxy, :expected, :top_level_cookie_path)
169
- end
153
+ let(:proxy_config) { nested_split_proxy }
170
154
 
171
155
  it 'creates them' do
172
156
  split_1 = split_1()
173
157
  split_2 = split_2()
174
158
  nested_split = nested_split()
175
159
 
176
- expected = described_class.new(sitehub_cookie_name: :expected,
177
- sitehub_cookie_path: subject.sitehub_cookie_path,
160
+ expected = described_class.new(version_cookie: TrackingCookieDefinition.new(:top_level_cookie_name, subject.sitehub_cookie_path),
178
161
  mapped_path: subject.mapped_path) do
179
162
  split(percentage: nested_split[:percentage], label: nested_split[:label]) do
180
163
  split percentage: split_1[:percentage], label: split_1[:label], url: split_1[:url]
@@ -187,11 +170,23 @@ class SiteHub
187
170
  end
188
171
 
189
172
  context 'default' do
190
- #TODO - implement me
191
- it 'sets the default' do
173
+ let(:default_url) { 'url' }
174
+ let(:proxy_config_default) do
175
+ {
176
+ path: '/',
177
+ default: default_url
178
+ }
179
+ end
180
+
181
+ subject do
182
+ described_class.from_hash(proxy_config_default, :expected, :top_level_cookie_path)
183
+ end
184
+
185
+ it 'sets the default url' do
186
+ expect(subject.default_route.app.mapped_url).to eq(default_url)
192
187
  end
193
188
  end
194
189
  end
195
190
  end
196
191
  end
197
- end
192
+ end
@@ -5,9 +5,8 @@ class SiteHub
5
5
  describe CandidateRoutes do
6
6
  include_context :middleware_test
7
7
 
8
-
9
8
  subject do
10
- described_class.new(sitehub_cookie_name: :cookie_name,
9
+ described_class.new(version_cookie: TrackingCookieDefinition.new(:cookie_name),
11
10
  mapped_path: '/path')
12
11
  end
13
12
 
@@ -17,16 +16,15 @@ class SiteHub
17
16
  end
18
17
 
19
18
  it 'returns the same intance everytime' do
20
- collection = Collection::SplitRouteCollection.new
21
- subject.candidates(collection)
19
+ collection = subject.candidates(Collection::SplitRouteCollection)
22
20
  expect(subject.candidates).to be(collection)
23
21
  end
24
22
 
25
23
  context 'endpoints already set' do
26
24
  context 'different object supplied' do
27
25
  it 'raises an error' do
28
- subject.candidates(Collection::SplitRouteCollection.new)
29
- expect { subject.candidates(Collection::RouteCollection.new) }
26
+ subject.candidates(Collection::SplitRouteCollection)
27
+ expect { subject.candidates(Collection::RouteCollection) }
30
28
  .to raise_error(CandidateRoutes::InvalidDefinitionError)
31
29
  end
32
30
  end
@@ -48,7 +46,7 @@ class SiteHub
48
46
 
49
47
  describe '#initialize' do
50
48
  let(:named_parameters) do
51
- { sitehub_cookie_name: :name,
49
+ { version_cookie: TrackingCookieDefinition.new(:name),
52
50
  mapped_path: '/path' }
53
51
  end
54
52
 
@@ -83,7 +81,7 @@ class SiteHub
83
81
  format(described_class::INVALID_PATH_MATCHER, '*', e.message)
84
82
  end
85
83
 
86
- expect { described_class.new(sitehub_cookie_name: '', mapped_path: '%r{*}') }
84
+ expect { described_class.new(version_cookie: TrackingCookieDefinition.new(:cookie_name), mapped_path: '%r{*}') }
87
85
  .to raise_error(described_class::InvalidPathMatcherError, expected_message)
88
86
  end
89
87
  end
@@ -161,7 +159,7 @@ class SiteHub
161
159
  end
162
160
 
163
161
  it 'accepts a percentage' do
164
- subject.candidates(Collection::SplitRouteCollection.new)
162
+ subject.candidates(Collection::SplitRouteCollection)
165
163
  endpoint = subject.add url: :url, label: :current, percentage: 50
166
164
  expect(endpoint.upper).to eq(50)
167
165
  end
@@ -182,7 +180,7 @@ class SiteHub
182
180
 
183
181
  expected_endpoints = CandidateRoutes.new(rule: rule,
184
182
  id: :label1,
185
- sitehub_cookie_name: :cookie_name,
183
+ version_cookie: TrackingCookieDefinition.new(:cookie_name),
186
184
  mapped_path: '/path',
187
185
  &block).build
188
186
 
@@ -194,7 +192,7 @@ class SiteHub
194
192
  context 'precentage and rule not supplied' do
195
193
  context 'split required' do
196
194
  it 'raise an error' do
197
- subject.candidates(Collection::SplitRouteCollection.new)
195
+ subject.candidates(Collection::SplitRouteCollection)
198
196
  expected_message = described_class::PERCENTAGE_NOT_SPECIFIED_MSG
199
197
  expect { subject.add(label: :label) {} }
200
198
  .to raise_exception described_class::InvalidDefinitionError, expected_message
@@ -203,7 +201,7 @@ class SiteHub
203
201
 
204
202
  context 'route required' do
205
203
  it 'raise an error' do
206
- subject.candidates(Collection::RouteCollection.new)
204
+ subject.candidates(Collection::RouteCollection)
207
205
  expected_message = described_class::RULE_NOT_SPECIFIED_MSG
208
206
  expect { subject.add(label: :label) {} }
209
207
  .to raise_exception described_class::InvalidDefinitionError, expected_message
@@ -224,7 +222,7 @@ class SiteHub
224
222
  subject.add(rule: rule, label: :label, &block)
225
223
 
226
224
  expected_endpoints = described_class.new(id: :label,
227
- sitehub_cookie_name: :cookie_name,
225
+ version_cookie: TrackingCookieDefinition.new(:cookie_name),
228
226
  rule: rule,
229
227
  mapped_path: subject.mapped_path,
230
228
  &block).tap do |builder|
@@ -354,23 +352,23 @@ class SiteHub
354
352
 
355
353
  context '#endpoints' do
356
354
  context 'called with a collection' do
357
- it 'sets endpoints to be that collection' do
358
- subject.candidates(:collection)
359
- expect(subject.candidates).to eq(:collection)
355
+ it 'sets endpoints to a collection of that type' do
356
+ subject.candidates(Hash)
357
+ expect(subject.candidates).to be_a(Hash)
360
358
  end
361
359
  end
362
360
 
363
361
  context 'already set with a different collection' do
364
362
  it 'raise an error' do
365
- subject.candidates(:collection1)
366
- expect { subject.candidates(:collection2) }.to raise_exception described_class::InvalidDefinitionError
363
+ subject.candidates(Hash)
364
+ expect { subject.candidates(Array) }.to raise_exception described_class::InvalidDefinitionError
367
365
  end
368
366
  end
369
367
  end
370
368
 
371
369
  describe '#forward_proxy' do
372
370
  subject do
373
- described_class.new(sitehub_cookie_name: :cookie_name,
371
+ described_class.new(version_cookie: TrackingCookieDefinition.new(:cookie_name),
374
372
  mapped_path: '/path')
375
373
  end
376
374
 
@@ -45,7 +45,6 @@ class SiteHub
45
45
  expect(core.mappings['/route_1'].sitehub_cookie_path).to eq(sitehub_json[:sitehub_cookie_path])
46
46
  end
47
47
  end
48
-
49
48
  end
50
49
 
51
50
  context 'reverse_proxies' do
@@ -84,7 +83,7 @@ class SiteHub
84
83
 
85
84
  describe '#proxy' do
86
85
  let(:expected_route) do
87
- CandidateRoutes.new(sitehub_cookie_name: RECORDED_ROUTES_COOKIE,
86
+ CandidateRoutes.new(version_cookie: TrackingCookieDefinition.new(RECORDED_ROUTES_COOKIE),
88
87
  mapped_path: '/app')
89
88
  end
90
89
 
@@ -19,25 +19,28 @@ class SiteHub
19
19
  end.init
20
20
  end
21
21
 
22
- # describe 'sitehub_cookie_path' do
23
- # pending 'defaults to CONSTANT' do
24
- #
25
- # end
26
- #
27
- # pending 'can be set' do
28
- #
29
- # end
30
- # end
31
- #
32
- # describe 'sitehub_cookie_name' do
33
- # pending 'defaults to CONSTANT' do
34
- #
35
- # end
36
- #
37
- # pending 'can be set' do
38
- #
39
- # end
40
- # end
22
+ shared_examples 'getter setter' do |default: nil|
23
+ let(:method_name) { self.class.parent_groups[1].description.delete('#') }
24
+ if default
25
+ it 'defaults' do
26
+ expect(subject.public_send(method_name)).to eq(default)
27
+ end
28
+ end
29
+
30
+ it 'can be set' do
31
+ custom_value = 'value'
32
+ subject.public_send(method_name, custom_value)
33
+ expect(subject.public_send(method_name)).to eq(custom_value)
34
+ end
35
+ end
36
+
37
+ describe '#sitehub_cookie_path' do
38
+ it_behaves_like 'getter setter', default: RECORDED_ROUTES_COOKIE_PATH
39
+ end
40
+
41
+ describe '#sitehub_cookie_name' do
42
+ it_behaves_like 'getter setter', default: RECORDED_ROUTES_COOKIE
43
+ end
41
44
 
42
45
  describe '#add_route' do
43
46
  def route(app, id:)
@@ -50,7 +53,7 @@ class SiteHub
50
53
  context 'candidate_routes as parameter' do
51
54
  it 'sets it' do
52
55
  another_mapping = '/mapping'
53
- candidate_routes = CandidateRoutes.new(sitehub_cookie_name: :sitehub_cookie_name, mapped_path: another_mapping)
56
+ candidate_routes = CandidateRoutes.new(version_cookie: TrackingCookieDefinition.new(:sitehub_cookie_name), mapped_path: another_mapping)
54
57
  subject.add_route candidate_routes: candidate_routes
55
58
  expect(subject[another_mapping]).to be(candidate_routes)
56
59
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sitehub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.alpha11
4
+ version: 0.5.0.alpha12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ladtech
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-09 00:00:00.000000000 Z
11
+ date: 2017-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.6.8
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.6.8
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: uuid
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -448,10 +448,10 @@ files:
448
448
  - spec/support/shared_contexts/module_spec_context.rb
449
449
  - spec/support/shared_contexts/rack_request_context.rb
450
450
  - spec/support/shared_contexts/rack_test_context.rb
451
+ - spec/support/shared_contexts/sitehub_json_context.rb
451
452
  - spec/support/shared_examples.rb
452
453
  - spec/support/shared_examples/memoized_helpers.rb
453
454
  - spec/support/shared_examples/prohibited_http_header_filter.rb
454
- - spec/support/shared_examples/sitehub_json_context.rb
455
455
  - spec/support/silent_warnings.rb
456
456
  - tasks/code_quality.rake
457
457
  - tasks/gem_tasks.rake