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 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"
@@ -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 undefined there)
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 => 'staging.auth.exvo.com',
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 => 'staging.cfs.exvo.com',
210
+ :cfs_host => 'cfs.exvo.co',
154
211
  :desktop_host => 'www.exvo.co',
155
- :themes_host => 'staging.themes.exvo.com',
156
- :blog_host => 'staging.blog.exvo.com',
157
- :contacts_host => 'staging.contacts.exvo.com',
158
- :inbox_host => 'staging.inbox.exvo.com',
159
- :music_host => 'staging.music.exvo.com',
160
- :pics_host => 'staging.pics.exvo.com',
161
- :preview_host => 'staging.preview.exvo.com'
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',
@@ -1,5 +1,5 @@
1
1
  module Exvo
2
2
  module Helpers
3
- VERSION = "0.4.0"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
@@ -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 "setting #auth_client_id and #auth_client_secret via ENV variables" do
80
- before do
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 setting overrides the defaults" do
95
- # as all methods are defined the same using metaprogramming, only testing for 1 is enough
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
- after do
109
- ENV["CDN_HOST"] = nil
110
- end
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 "setting host directly overrides the defaults" do
114
- # as all methods are defined the same using metaprogramming, only testing for 1 is enough
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
- after do
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
- after do
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
- describe "setting the auth_require_ssl directly overrides the default" do
141
- before do
142
- Exvo::Helpers.auth_require_ssl = false
143
- end
144
-
145
- specify { Exvo::Helpers.auth_uri.should match(/http:\/\//) }
146
-
147
- after do
148
- Exvo::Helpers.auth_require_ssl = nil
149
- end
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.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-05-15 00:00:00.000000000 Z
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