exvo_helpers 0.4.0 → 0.5.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.
- data/CHANGELOG.md +6 -0
- data/README.md +9 -0
- data/exvo_helpers.gemspec +2 -0
- data/lib/exvo_helpers/helpers.rb +69 -10
- data/lib/exvo_helpers/version.rb +1 -1
- data/spec/exvo_helpers/helpers_spec.rb +89 -64
- metadata +34 -2
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
Note, that only significant changes are listed.
|
4
4
|
|
5
|
+
## 0.5.0 (2012-06-15)
|
6
|
+
|
7
|
+
* all staging apps now use 'exvo.co' domain
|
8
|
+
* new `sso_cookie_domain` and `sso_cookie_secret` settings
|
9
|
+
|
10
|
+
|
5
11
|
## 0.4.0 (2012-05-15)
|
6
12
|
|
7
13
|
* support for Sinatra apps (use `ENV["RACK_ENV"]` to set environment)
|
data/README.md
CHANGED
@@ -16,6 +16,9 @@ Exvo::Helpers.auth_require_ssl => false
|
|
16
16
|
Exvo::Helpers.auth_client_id => nil
|
17
17
|
Exvo::Helpers.auth_client_secret => nil
|
18
18
|
|
19
|
+
Exvo::Helpers.sso_cookie_domain => 'exvo.local'
|
20
|
+
Exvo::Helpers.sso_cookie_secret => 'some secret cookie signing key'
|
21
|
+
|
19
22
|
Exvo::Helpers.auth_host => 'auth.exvo.local'
|
20
23
|
Exvo::Helpers.cdn_host => 'www.exvo.local'
|
21
24
|
Exvo::Helpers.cfs_host => 'cfs.exvo.local'
|
@@ -53,6 +56,9 @@ ENV['AUTH_REQUIRE_SSL'] = 'true'
|
|
53
56
|
ENV['AUTH_CLIENT_ID'] = '123'
|
54
57
|
ENV['AUTH_CLIENT_SECRET'] = 'abc'
|
55
58
|
|
59
|
+
ENV['SSO_COOKIE_DOMAIN'] = 'exvo.dev'
|
60
|
+
ENV['SSO_COOKIE_SECRET'] = 'exvo.dev'
|
61
|
+
|
56
62
|
ENV['AUTH_HOST'] = 'test.auth.exvo.com'
|
57
63
|
ENV['CDN_HOST'] = 'test.cdn.exvo.com'
|
58
64
|
ENV['CFS_HOST'] = 'test.cfs.exvo.com'
|
@@ -75,6 +81,9 @@ Exvo::Helpers.auth_require_ssl = true
|
|
75
81
|
Exvo::Helpers.auth_client_id = '123'
|
76
82
|
Exvo::Helpers.auth_client_secret = 'abc'
|
77
83
|
|
84
|
+
Exvo::Helpers.sso_cookie_domain = 'exvo.dev'
|
85
|
+
Exvo::Helpers.sso_cookie_key = 'some secret key'
|
86
|
+
|
78
87
|
Exvo::Helpers.auth_host = 'test.auth.exvo.com'
|
79
88
|
Exvo::Helpers.cdn_host = 'test.cdn.exvo.com'
|
80
89
|
Exvo::Helpers.cfs_host = 'test.cfs.exvo.com'
|
data/exvo_helpers.gemspec
CHANGED
@@ -16,8 +16,10 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
gem.require_paths = ["lib"]
|
18
18
|
|
19
|
+
gem.add_development_dependency "rake"
|
19
20
|
gem.add_development_dependency 'rspec', ['>= 2.8']
|
20
21
|
gem.add_development_dependency 'guard', ['>= 0.10.0']
|
22
|
+
gem.add_development_dependency 'guard-bundler'
|
21
23
|
gem.add_development_dependency 'guard-rspec', ['>= 0.6.0']
|
22
24
|
gem.add_development_dependency "rb-fsevent"
|
23
25
|
gem.add_development_dependency "rb-inotify"
|
data/lib/exvo_helpers/helpers.rb
CHANGED
@@ -105,6 +105,61 @@ module Exvo
|
|
105
105
|
define_method "auth_#{option}=" do |value|
|
106
106
|
class_variable_set("@@auth_#{option}", value)
|
107
107
|
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
# SSO Cookie Domain
|
115
|
+
|
116
|
+
# Dynamically define class methods
|
117
|
+
class << self
|
118
|
+
|
119
|
+
%w(sso_cookie_domain).each do |option|
|
120
|
+
|
121
|
+
# def self.sso_cookie_domain
|
122
|
+
# @@sso_cookie_domain ||= ENV['SSO_COOKIE_DOMAIN'] || default_opts[env.to_sym][:sso_cookie_domain]
|
123
|
+
# end
|
124
|
+
define_method "#{option}" do
|
125
|
+
if class_variable_defined?("@@#{option}") and class_variable_get("@@#{option}")
|
126
|
+
class_variable_get("@@#{option}")
|
127
|
+
else
|
128
|
+
domain = ENV["#{option.upcase}"] || default_opts[env.to_sym]["#{option}".to_sym]
|
129
|
+
class_variable_set("@@#{option}", domain)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# def self.sso_cookie_domain=(domain)
|
134
|
+
# @@sso_cookie_domain = domain
|
135
|
+
# end
|
136
|
+
define_method "#{option}=" do |value|
|
137
|
+
class_variable_set("@@#{option}", value)
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
%w(sso_cookie_secret).each do |option|
|
143
|
+
|
144
|
+
# def self.sso_cookie_secret
|
145
|
+
# @@sso_cookie_secret ||= ENV['SSO_COOKIE_secret']
|
146
|
+
# end
|
147
|
+
define_method "#{option}" do
|
148
|
+
if class_variable_defined?("@@#{option}") and class_variable_get("@@#{option}")
|
149
|
+
class_variable_get("@@#{option}")
|
150
|
+
else
|
151
|
+
secret = ENV["#{option.upcase}"]
|
152
|
+
class_variable_set("@@#{option}", secret)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
# def self.sso_cookie_secret=(secret)
|
157
|
+
# @@sso_cookie_secret = secret
|
158
|
+
# end
|
159
|
+
define_method "#{option}=" do |value|
|
160
|
+
class_variable_set("@@#{option}", value)
|
161
|
+
end
|
162
|
+
|
108
163
|
end
|
109
164
|
|
110
165
|
end
|
@@ -113,7 +168,7 @@ module Exvo
|
|
113
168
|
# ENV
|
114
169
|
|
115
170
|
# by default fall back to production; this way the omniauth-exvo's gem specs can pass
|
116
|
-
# (they depend on this gem and on env, but nor Rails nor Merb is
|
171
|
+
# (they depend on this gem and on env, but nor Rails nor Merb is defined there)
|
117
172
|
def self.env
|
118
173
|
@@env ||= Rails.env if defined?(Rails)
|
119
174
|
@@env ||= Merb.env if defined?(Merb)
|
@@ -134,6 +189,7 @@ module Exvo
|
|
134
189
|
:auth_debug => false,
|
135
190
|
:auth_host => 'auth.exvo.com',
|
136
191
|
:auth_require_ssl => true,
|
192
|
+
:sso_cookie_domain => 'exvo.com',
|
137
193
|
:cdn_host => 'd33gjlr95u9pgf.cloudfront.net', # cloudfront.net so we can use https (cdn.exvo.com via https does not work properly)
|
138
194
|
:cfs_host => 'cfs.exvo.com',
|
139
195
|
:desktop_host => 'www.exvo.com',
|
@@ -147,23 +203,25 @@ module Exvo
|
|
147
203
|
},
|
148
204
|
:staging => {
|
149
205
|
:auth_debug => false,
|
150
|
-
:auth_host => '
|
206
|
+
:auth_host => 'auth.exvo.co',
|
151
207
|
:auth_require_ssl => false,
|
208
|
+
:sso_cookie_domain => 'exvo.co',
|
152
209
|
:cdn_host => 'd1by559a994699.cloudfront.net',
|
153
|
-
:cfs_host => '
|
210
|
+
:cfs_host => 'cfs.exvo.co',
|
154
211
|
:desktop_host => 'www.exvo.co',
|
155
|
-
:themes_host => '
|
156
|
-
:blog_host => '
|
157
|
-
:contacts_host => '
|
158
|
-
:inbox_host => '
|
159
|
-
:music_host => '
|
160
|
-
:pics_host => '
|
161
|
-
:preview_host => '
|
212
|
+
:themes_host => 'themes.exvo.co',
|
213
|
+
:blog_host => 'blog.exvo.co',
|
214
|
+
:contacts_host => 'contacts.exvo.co',
|
215
|
+
:inbox_host => 'inbox.exvo.co',
|
216
|
+
:music_host => 'music.exvo.co',
|
217
|
+
:pics_host => 'pics.exvo.co',
|
218
|
+
:preview_host => 'preview.exvo.co'
|
162
219
|
},
|
163
220
|
:development => {
|
164
221
|
:auth_debug => false,
|
165
222
|
:auth_host => 'auth.exvo.local',
|
166
223
|
:auth_require_ssl => false,
|
224
|
+
:sso_cookie_domain => 'exvo.local',
|
167
225
|
:cdn_host => 'www.exvo.local',
|
168
226
|
:cfs_host => 'cfs.exvo.local',
|
169
227
|
:desktop_host => 'www.exvo.local',
|
@@ -179,6 +237,7 @@ module Exvo
|
|
179
237
|
:auth_debug => false,
|
180
238
|
:auth_host => 'auth.exvo.local',
|
181
239
|
:auth_require_ssl => false,
|
240
|
+
:sso_cookie_domain => 'exvo.local',
|
182
241
|
:cdn_host => 'www.exvo.local',
|
183
242
|
:cfs_host => 'cfs.exvo.local',
|
184
243
|
:desktop_host => 'www.exvo.local',
|
data/lib/exvo_helpers/version.rb
CHANGED
@@ -2,6 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Exvo::Helpers do
|
4
4
|
|
5
|
+
# clear all memoizations after each spec run
|
6
|
+
after do
|
7
|
+
clear_memoizations
|
8
|
+
end
|
9
|
+
|
5
10
|
describe ".env class method" do
|
6
11
|
it "should fall back to 'production' if Rails & Merb are undefined" do
|
7
12
|
Exvo::Helpers.env.should eql('production')
|
@@ -17,17 +22,12 @@ describe Exvo::Helpers do
|
|
17
22
|
it "returns 'staging' when RACK_ENV is set to 'staging'" do
|
18
23
|
ENV["RACK_ENV"] = 'staging'
|
19
24
|
Exvo::Helpers.env.should eql('staging')
|
20
|
-
ENV.delete("RACK_ENV")
|
21
25
|
end
|
22
26
|
|
23
27
|
it "allows setting env" do
|
24
28
|
Exvo::Helpers.env = 'test'
|
25
29
|
Exvo::Helpers.env.should eql('test')
|
26
30
|
end
|
27
|
-
|
28
|
-
after do
|
29
|
-
Exvo::Helpers.env = nil
|
30
|
-
end
|
31
31
|
end
|
32
32
|
|
33
33
|
describe "uri methods in production environment" do
|
@@ -58,95 +58,120 @@ describe Exvo::Helpers do
|
|
58
58
|
specify { Exvo::Helpers.preview_host.should eql('preview.exvo.com') }
|
59
59
|
end
|
60
60
|
|
61
|
+
describe "host methods in staging environment" do
|
62
|
+
before do
|
63
|
+
Exvo::Helpers.env = 'staging'
|
64
|
+
end
|
65
|
+
|
66
|
+
specify { Exvo::Helpers.auth_host.should match('auth.exvo.co') }
|
67
|
+
specify { Exvo::Helpers.cdn_host.should eql('d1by559a994699.cloudfront.net') }
|
68
|
+
specify { Exvo::Helpers.cfs_host.should eql('cfs.exvo.co') }
|
69
|
+
specify { Exvo::Helpers.desktop_host.should eql('www.exvo.co') }
|
70
|
+
specify { Exvo::Helpers.themes_host.should eql('themes.exvo.co') }
|
71
|
+
specify { Exvo::Helpers.blog_host.should eql('blog.exvo.co') }
|
72
|
+
specify { Exvo::Helpers.contacts_host.should eql('contacts.exvo.co') }
|
73
|
+
specify { Exvo::Helpers.inbox_host.should eql('inbox.exvo.co') }
|
74
|
+
specify { Exvo::Helpers.music_host.should eql('music.exvo.co') }
|
75
|
+
specify { Exvo::Helpers.pics_host.should eql('pics.exvo.co') }
|
76
|
+
specify { Exvo::Helpers.preview_host.should eql('preview.exvo.co') }
|
77
|
+
end
|
78
|
+
|
61
79
|
describe "#auth_debug by default for production env" do
|
62
80
|
specify { Exvo::Helpers.auth_debug.should be_false }
|
63
|
-
|
64
|
-
after do
|
65
|
-
# reset cached class instance variable
|
66
|
-
Exvo::Helpers.auth_debug = nil
|
67
|
-
end
|
68
81
|
end
|
69
82
|
|
70
83
|
describe "#auth_require_ssl by default for production env" do
|
71
84
|
specify { Exvo::Helpers.auth_require_ssl.should be_true }
|
72
|
-
|
73
|
-
after do
|
74
|
-
# reset cached class instance variable
|
75
|
-
Exvo::Helpers.auth_require_ssl = nil
|
76
|
-
end
|
77
85
|
end
|
78
86
|
|
79
|
-
describe "
|
80
|
-
|
81
|
-
ENV["AUTH_CLIENT_ID"] = '123'
|
82
|
-
ENV["AUTH_CLIENT_SECRET"] = 'abc'
|
83
|
-
end
|
84
|
-
|
85
|
-
specify { Exvo::Helpers.auth_client_id.should eq('123') }
|
86
|
-
specify { Exvo::Helpers.auth_client_secret.should eq('abc') }
|
87
|
-
|
88
|
-
after do
|
89
|
-
ENV["AUTH_CLIENT_ID"] = nil
|
90
|
-
ENV["AUTH_CLIENT_SECRET"] = nil
|
91
|
-
end
|
87
|
+
describe "#sso_cookie_domain by default for production env" do
|
88
|
+
specify { Exvo::Helpers.sso_cookie_domain.should eq("exvo.com") }
|
92
89
|
end
|
93
90
|
|
94
|
-
describe "ENV
|
95
|
-
#
|
91
|
+
describe "ENV settings override the defaults" do
|
92
|
+
# all *host* methods are defined the same using metaprogramming, only testing for 1 is enough
|
96
93
|
let(:cdn_host) { "test.cdn.exvo.com" }
|
94
|
+
let(:auth_client_id) { '123' }
|
95
|
+
let(:auth_client_secret) { 'abc' }
|
96
|
+
let(:auth_require_ssl) { 'false' }
|
97
|
+
let(:sso_cookie_domain) { "exvo.dev" }
|
98
|
+
let(:sso_cookie_secret) { "secret" }
|
97
99
|
|
98
100
|
before do
|
99
|
-
# clear any previous memoization
|
100
|
-
Exvo::Helpers.cdn_host = nil
|
101
|
-
|
102
101
|
# set ENV
|
103
102
|
ENV["CDN_HOST"] = cdn_host
|
103
|
+
ENV["AUTH_CLIENT_ID"] = auth_client_id
|
104
|
+
ENV["AUTH_CLIENT_SECRET"] = auth_client_secret
|
105
|
+
ENV["AUTH_REQUIRE_SSL"] = auth_require_ssl
|
106
|
+
ENV["SSO_COOKIE_DOMAIN"] = sso_cookie_domain
|
107
|
+
ENV["SSO_COOKIE_SECRET"] = sso_cookie_secret
|
104
108
|
end
|
105
109
|
|
106
110
|
specify { Exvo::Helpers.cdn_host.should eql(cdn_host) }
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
+
specify { Exvo::Helpers.auth_client_id.should eq(auth_client_id) }
|
112
|
+
specify { Exvo::Helpers.auth_client_secret.should eq(auth_client_secret) }
|
113
|
+
specify { Exvo::Helpers.auth_uri.should match(/http:\/\//) }
|
114
|
+
specify { Exvo::Helpers.sso_cookie_domain.should eql(sso_cookie_domain) }
|
115
|
+
specify { Exvo::Helpers.sso_cookie_secret.should eql(sso_cookie_secret) }
|
111
116
|
end
|
112
117
|
|
113
|
-
describe "
|
114
|
-
#
|
118
|
+
describe "direct settings override the defaults" do
|
119
|
+
# all *host* methods are defined the same using metaprogramming, only testing for 1 is enough
|
115
120
|
let(:cdn_host) { "new.cdn.exvo.com" }
|
121
|
+
let(:auth_client_id) { '123' }
|
122
|
+
let(:auth_client_secret) { 'abc' }
|
123
|
+
let(:auth_require_ssl) { false }
|
124
|
+
let(:sso_cookie_domain) { "exvo.new" }
|
125
|
+
let(:sso_cookie_secret) { "abc" }
|
116
126
|
|
117
127
|
before do
|
118
128
|
Exvo::Helpers.cdn_host = cdn_host
|
129
|
+
Exvo::Helpers.auth_client_id = auth_client_id
|
130
|
+
Exvo::Helpers.auth_client_secret = auth_client_secret
|
131
|
+
Exvo::Helpers.auth_require_ssl = auth_require_ssl
|
132
|
+
Exvo::Helpers.sso_cookie_domain = sso_cookie_domain
|
133
|
+
Exvo::Helpers.sso_cookie_secret = sso_cookie_secret
|
119
134
|
end
|
120
135
|
|
121
136
|
specify { Exvo::Helpers.cdn_host.should eql(cdn_host) }
|
122
|
-
|
123
|
-
|
124
|
-
Exvo::Helpers.cdn_host = nil
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe "setting the auth_require_ssl to false via ENV variable overrides the default" do
|
129
|
-
before do
|
130
|
-
ENV["AUTH_REQUIRE_SSL"] = 'false'
|
131
|
-
end
|
132
|
-
|
137
|
+
specify { Exvo::Helpers.auth_client_id.should eq(auth_client_id) }
|
138
|
+
specify { Exvo::Helpers.auth_client_secret.should eq(auth_client_secret) }
|
133
139
|
specify { Exvo::Helpers.auth_uri.should match(/http:\/\//) }
|
134
|
-
|
135
|
-
|
136
|
-
ENV["AUTH_REQUIRE_SSL"] = nil
|
137
|
-
end
|
140
|
+
specify { Exvo::Helpers.sso_cookie_domain.should eql(sso_cookie_domain) }
|
141
|
+
specify { Exvo::Helpers.sso_cookie_secret.should eql(sso_cookie_secret) }
|
138
142
|
end
|
139
143
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
144
|
+
# Clear all memoizations and ENV variables
|
145
|
+
def clear_memoizations
|
146
|
+
Exvo::Helpers.env = nil
|
147
|
+
|
148
|
+
Exvo::Helpers.auth_debug = nil
|
149
|
+
Exvo::Helpers.auth_require_ssl = nil
|
150
|
+
Exvo::Helpers.auth_client_id = nil
|
151
|
+
Exvo::Helpers.auth_client_secret = nil
|
152
|
+
Exvo::Helpers.sso_cookie_domain = nil
|
153
|
+
Exvo::Helpers.sso_cookie_secret = nil
|
154
|
+
|
155
|
+
Exvo::Helpers.auth_host = nil
|
156
|
+
Exvo::Helpers.cdn_host = nil
|
157
|
+
Exvo::Helpers.cfs_host = nil
|
158
|
+
Exvo::Helpers.desktop_host = nil
|
159
|
+
Exvo::Helpers.themes_host = nil
|
160
|
+
Exvo::Helpers.blog_host = nil
|
161
|
+
Exvo::Helpers.contacts_host = nil
|
162
|
+
Exvo::Helpers.inbox_host = nil
|
163
|
+
Exvo::Helpers.music_host = nil
|
164
|
+
Exvo::Helpers.pics_host = nil
|
165
|
+
Exvo::Helpers.preview_host = nil
|
166
|
+
|
167
|
+
ENV.delete("RACK_ENV")
|
168
|
+
ENV.delete("CDN_HOST")
|
169
|
+
ENV.delete("AUTH_DEBUG")
|
170
|
+
ENV.delete("AUTH_CLIENT_ID")
|
171
|
+
ENV.delete("AUTH_CLIENT_SECRET")
|
172
|
+
ENV.delete("AUTH_REQUIRE_SSL")
|
173
|
+
ENV.delete("SSO_COOKIE_DOMAIN")
|
174
|
+
ENV.delete("SSO_COOKIE_SECRET")
|
150
175
|
end
|
151
176
|
|
152
177
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exvo_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
14
30
|
- !ruby/object:Gem::Dependency
|
15
31
|
name: rspec
|
16
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -43,6 +59,22 @@ dependencies:
|
|
43
59
|
- - ! '>='
|
44
60
|
- !ruby/object:Gem::Version
|
45
61
|
version: 0.10.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: guard-bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
46
78
|
- !ruby/object:Gem::Dependency
|
47
79
|
name: guard-rspec
|
48
80
|
requirement: !ruby/object:Gem::Requirement
|