singularity 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/singularity.rb +14 -18
- data/lib/singularity/configuration.rb +17 -0
- data/lib/singularity/profile.rb +2 -1
- data/lib/singularity/version.rb +1 -1
- data/spec/singularity/configuration_spec.rb +84 -0
- metadata +4 -2
data/lib/singularity.rb
CHANGED
@@ -1,29 +1,25 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'redis'
|
3
3
|
require 'securerandom'
|
4
|
+
require 'forwardable'
|
5
|
+
require 'singularity/configuration'
|
4
6
|
|
5
7
|
module Singularity
|
6
|
-
|
7
|
-
class_variable_set("@@#{attribute}", default)
|
8
|
-
class_eval <<-EOS
|
9
|
-
def self.#{attribute}=(value)
|
10
|
-
@@#{attribute} = value
|
11
|
-
end
|
8
|
+
@config = Configuration.new
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
EOS
|
17
|
-
end
|
10
|
+
class << self
|
11
|
+
extend Forwardable
|
18
12
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
13
|
+
def configure
|
14
|
+
if block_given?
|
15
|
+
yield @config
|
16
|
+
else
|
17
|
+
@config
|
18
|
+
end
|
19
|
+
end
|
25
20
|
|
26
|
-
|
21
|
+
def_delegators :@config, :auth_path, :session_prefix, :profile_prefix, :token_prefix, :warden_user_key
|
22
|
+
def_delegators :@config, :auth_path=, :session_prefix=, :profile_prefix=, :token_prefix=, :warden_user_key=
|
27
23
|
|
28
24
|
def generate_session_token(session_id, session, options = {})
|
29
25
|
if session.key?("_token_expires") && session["_token_expires"].to_i > Time.now.to_i
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Singularity
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :auth_path, :session_prefix, :profile_prefix, :token_prefix, :warden_user_key
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
reset
|
7
|
+
end
|
8
|
+
|
9
|
+
def reset
|
10
|
+
@auth_path = 'http://localhost:9292'
|
11
|
+
@session_prefix = 'rack_session'
|
12
|
+
@profile_prefix = 'profile'
|
13
|
+
@token_prefix = 'singularity_session_token'
|
14
|
+
@warden_user_key = 'warden.user.default.key'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/singularity/profile.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'redis/hash_key'
|
2
2
|
require 'forwardable'
|
3
|
+
require 'securerandom'
|
3
4
|
require 'singularity/password_hash'
|
4
5
|
|
5
6
|
module Singularity
|
@@ -19,7 +20,7 @@ module Singularity
|
|
19
20
|
def_delegators :profile, :[], :[]=
|
20
21
|
def_delegators :profile, :all, :bulk_get, :bulk_set, :each, :empty?, :fetch
|
21
22
|
def_delegators :profile, :has_key?, :include?, :incr, :incrby, :key, :key?
|
22
|
-
def_delegators :profile, :keys, :member?, :vals, :values, :clear
|
23
|
+
def_delegators :profile, :keys, :member?, :vals, :values, :clear, :delete
|
23
24
|
|
24
25
|
def password_hash
|
25
26
|
self['password_hash']
|
data/lib/singularity/version.rb
CHANGED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'singularity'
|
3
|
+
|
4
|
+
describe Singularity do
|
5
|
+
after(:each) { Singularity.configure.reset }
|
6
|
+
|
7
|
+
context 'auth_path' do
|
8
|
+
it "defaults to localhost:9292" do
|
9
|
+
expect( subject.auth_path ).to eq 'http://localhost:9292'
|
10
|
+
end
|
11
|
+
|
12
|
+
it "is writeable" do
|
13
|
+
subject.auth_path = 'http://authmaster.local:8080'
|
14
|
+
|
15
|
+
expect( subject.auth_path ).to eq 'http://authmaster.local:8080'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'session_prefix' do
|
20
|
+
it "defaults to rack_session" do
|
21
|
+
expect( subject.session_prefix ).to eq 'rack_session'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "is writeable" do
|
25
|
+
subject.session_prefix = 'foo'
|
26
|
+
expect( subject.session_prefix ).to eq 'foo'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'profile_prefix' do
|
31
|
+
it "defaults to profile" do
|
32
|
+
expect( subject.profile_prefix ).to eq 'profile'
|
33
|
+
end
|
34
|
+
|
35
|
+
it "is writeable" do
|
36
|
+
subject.profile_prefix = 'user'
|
37
|
+
expect( subject.profile_prefix ).to eq 'user'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'token_prefix' do
|
42
|
+
it "defaults to singularity_session_token" do
|
43
|
+
expect( subject.token_prefix ).to eq 'singularity_session_token'
|
44
|
+
end
|
45
|
+
|
46
|
+
it "is writeable" do
|
47
|
+
subject.token_prefix = 'token'
|
48
|
+
expect( subject.token_prefix ).to eq 'token'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'warden_user_key' do
|
53
|
+
it "defaults to warden.user.default.key" do
|
54
|
+
expect( subject.warden_user_key ).to eq 'warden.user.default.key'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "is writeable" do
|
58
|
+
subject.warden_user_key = 'singularity.user'
|
59
|
+
expect( subject.warden_user_key ).to eq 'singularity.user'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'configure' do
|
64
|
+
it "returns config object if not given a block" do
|
65
|
+
expect( subject.configure ).to be_a Singularity::Configuration
|
66
|
+
end
|
67
|
+
|
68
|
+
it "accepts a block to set configuration" do
|
69
|
+
subject.configure do |config|
|
70
|
+
config.auth_path = 'http://foobar.local:8088'
|
71
|
+
config.session_prefix = 'foo_session'
|
72
|
+
config.profile_prefix = 'foo_user'
|
73
|
+
config.token_prefix = 'foo_token'
|
74
|
+
config.warden_user_key = 'foo.user.key'
|
75
|
+
end
|
76
|
+
|
77
|
+
expect( subject.auth_path ).to eq 'http://foobar.local:8088'
|
78
|
+
expect( subject.session_prefix ).to eq 'foo_session'
|
79
|
+
expect( subject.profile_prefix ).to eq 'foo_user'
|
80
|
+
expect( subject.token_prefix ).to eq 'foo_token'
|
81
|
+
expect( subject.warden_user_key ).to eq 'foo.user.key'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: singularity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-03-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: redis-objects
|
@@ -100,10 +100,12 @@ extensions: []
|
|
100
100
|
extra_rdoc_files: []
|
101
101
|
files:
|
102
102
|
- LICENSE
|
103
|
+
- lib/singularity/configuration.rb
|
103
104
|
- lib/singularity/password_hash.rb
|
104
105
|
- lib/singularity/profile.rb
|
105
106
|
- lib/singularity/version.rb
|
106
107
|
- lib/singularity.rb
|
108
|
+
- spec/singularity/configuration_spec.rb
|
107
109
|
- spec/singularity/profile_spec.rb
|
108
110
|
- spec/spec_helper.rb
|
109
111
|
homepage: https://github.com/lyconic/singularity
|