session_manager 0.0.3 → 0.0.6

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: 988e4724c26c4b1d26a595249a4a890700980a2a
4
- data.tar.gz: 464d1440385bd5c802b4f3eeb1fdc2d30a63da6e
3
+ metadata.gz: 00679bbdc1df2566058ee2baba9b24f05faa4079
4
+ data.tar.gz: 4ef9a4bb36b653fed2e976ea2e793e92128816f2
5
5
  SHA512:
6
- metadata.gz: 0696db9db3829544299eff2d2c9ef2e2368c22c04ed2f9a89d7f1055b794119a34741a19242fe6942881e98c558e33731b890db62794770c81cf35eddd9762f8
7
- data.tar.gz: 2948a5d9b91c8cac3d16edd1d7f24e33ae0c266890657726a2a7335ca029183dd61d54e53b2f4491b8d877435c49cea5f626b56f1c6dfdfff5431ac8933cff02
6
+ metadata.gz: 2aa3ef7d50a1be951c6b2cd498ba9d10eb35ed6b9cedf03caa0c1081c3f4402443bf325d0246b0f264ef34cf8dd61a029dcab154691449f82aa8776ed0f02123
7
+ data.tar.gz: 2a08c30681be1cce7d31782efefb9d7c0cbe902ba8a9104f04460263188dfcef11f73d533bc87e9589fb8f457f7c97a8c687ac2fcf19c873f65db6b3627e1f02
@@ -1,73 +1,172 @@
1
1
  require 'redis'
2
2
  require 'json'
3
3
  require 'uuid'
4
- require_relative 'base'
5
4
 
6
- class SessionManager::Handler < Session_Manager::Base
7
5
 
8
- def create_session(attribute,option)
9
- if validate_json(attribute)
6
+ class SessionManager::Handler
7
+
8
+ USERS_SESSIONS = 'users_sessions'
9
+ APPS_SESSIONS = 'applications_sessions'
10
+
11
+
12
+ def self.create_session(attribute,option)
13
+ if validate_option(option) && valid_token?(attribute,option)
10
14
  param = parse_json(attribute)
11
15
  collection = collection(option)
12
16
  token = generate_token
13
17
  session = session_generator(option,param,token)
14
- @redis.sadd(collection,session.to_json)
18
+ result = get_redis.sadd(collection,session.to_json)
19
+ result ? return_response(200,token) : return_response(400,"Not created")
15
20
  else
16
- false
21
+ return_response(400,"Not created")
17
22
  end
18
23
  end
19
24
 
20
- def verify_session(object,option)
21
- if validate_json(object)
25
+ def self.verify_session(object,option)
26
+ if validate_option(option) && validate_json(object,option)
22
27
  collection = collection(option)
23
- @redis.sismember(collection,object)
28
+ result = get_redis.sismember(collection,object)
29
+ result ? return_response(200,"Ok") : return_response(400,"Not ok")
24
30
  else
25
- false
31
+ return_response(400,"Ok")
26
32
  end
27
33
  end
28
34
 
29
- def delete_session(object,option)
30
- if validate_json(object)
35
+
36
+ def self.delete_session(object,option)
37
+ if validate_option(option) && validate_json(object,option)
31
38
  collection = collection(option)
32
- @redis.srem(collection,object)
39
+ result = get_redis.srem(collection,object)
40
+ result ? return_response(200,"Succesfully deleted") : return_response(400,"Not deleted")
33
41
  else
34
- false
42
+ return_response(400,"Not deleted")
35
43
  end
36
44
  end
37
45
 
38
- private #####################################################################################################
46
+ private #######################################################################
47
+
48
+ def self.get_redis
49
+ redis = Redis.current
50
+ redis
51
+ end
52
+
53
+
54
+ def self.get_uuid
55
+ uuid = UUID.new
56
+ uuid
57
+ end
58
+
59
+ #generate token
60
+ def self.generate_token
61
+ get_uuid.generate
62
+ end
39
63
 
40
- def collection(option)
64
+ #determine the database collection to use
65
+ def self.collection(option)
41
66
  user = option.fetch(:user) || false
42
- app = option.fetch(:app) || false
67
+ app = option.fetch(:app) || false
43
68
  collection = user ? USERS_SESSIONS : APPS_SESSIONS
44
69
  return collection
45
70
  end
46
71
 
47
- def parse_json(param)
72
+ #parse json
73
+ def self.parse_json(param)
48
74
  JSON.parse(param)
49
75
  end
50
76
 
51
- def session_generator(option, param, token)
77
+ #create a session hash for the database
78
+ def self.session_generator(option, param, token)
52
79
  option[:user] ? { login: param['login'],token: token} : { api_key: param['api_key'],token: token}
53
80
  end
54
81
 
55
- def validate_json(param)
56
- obj = parse_json(param)
57
- hash = obj.to_hash
58
- validate_argument(hash)
82
+ #check if the passed keys are those which are waited
83
+ def self.valid_keys?(param,option)
84
+ option[:user] ? waited_keys = ["login","token"] : waited_keys = ["api_key","token"]
85
+ waited_keys.each do |k|
86
+ if !(param.has_key?(k))
87
+ return false
88
+ break
89
+ end
90
+ end
91
+ return true
92
+ end
93
+
94
+ #check if the passed token is valid
95
+ def self.valid_token?(token,option)
96
+ option[:user] ? attr = "login" : attr = "api_key"
97
+ begin
98
+ object = parse_json(token)
99
+ hash = object.to_hash
100
+ if !(hash.has_key?(attr)) || !(hash[attr].is_a?(String))
101
+ return false
102
+ end
103
+ rescue
104
+ return false
105
+ end
106
+ return true
107
+ end
108
+
109
+ #check if hash's values are String
110
+ def self.validate_values(hash)
111
+ values = hash.values
112
+ values.each do |v|
113
+ if !(v.is_a?(String))
114
+ return false
115
+ break
116
+ end
117
+ end
118
+ return true
59
119
  end
60
120
 
61
- def validate_argument(param)
121
+ #check if the hash values are not nil neither empty
122
+ def self.validate_argument(param)
62
123
  param.values.each do |v|
63
124
  if v.nil? || v.empty?
64
125
  return false
65
126
  break
66
- else
67
- return true
68
127
  end
69
128
  end
129
+ return true
130
+ end
131
+
132
+ #check if the json object is valid
133
+ def self.validate_json(param,option)
134
+ begin
135
+ object = parse_json(param)
136
+ hash = object.to_hash
137
+ return valid_keys?(hash,option) && validate_argument(hash) && validate_values(hash)
138
+ rescue
139
+ return false
140
+ end
70
141
  end
71
142
 
143
+ #check if the option is valid
144
+ def self.validate_option(option)
145
+ if !(option.nil?) && option.is_a?(Hash) && !(option.empty?) && option.has_key?(:user) && option.has_key?(:app)
146
+ if option[:user] && option[:app]
147
+ return false
148
+ else
149
+ if !option[:user] && !option[:app]
150
+ return false
151
+ else
152
+ option.values.each do |v|
153
+ unless (v.is_a?(TrueClass) || v.is_a?(FalseClass))
154
+ return false
155
+ break
156
+ end
157
+ end
158
+ end
159
+ end
160
+ else
161
+ return false
162
+ end
163
+ return true
164
+ end
165
+
166
+ #change the return parameter in hash format
167
+ def self.return_response(code,msg)
168
+ {code: code,message: msg}
169
+ end
170
+
72
171
 
73
172
  end
@@ -1,3 +1,3 @@
1
1
  module SessionManager
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -26,4 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.required_ruby_version = ">= 2.0"
27
27
  spec.add_development_dependency "rspec", "~>2.6"
28
28
  spec.add_development_dependency "uuid", "~> 2.3", ">= 2.3.7"
29
+ spec.add_development_dependency "autotest", "~> 4.4", ">= 4.4.6"
30
+ spec.add_development_dependency "autotest-fsevent", "~> 0.2", ">= 0.2.9"
31
+ spec.add_development_dependency "autotest-growl", "~> 0.2", ">= 0.2.16"
32
+ spec.add_development_dependency "ZenTest", "~> 4.10", ">= 4.10.0"
29
33
  end
@@ -1,16 +1,13 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
3
  describe SessionManager::Handler do
4
-
5
- let (:session_handler) { SessionManager::Handler.new }
4
+
6
5
  let (:login) { {login: 'login'}.to_json}
7
6
  let (:api_key) { {api_key: '01'}.to_json}
8
7
  let (:user_option) { {user: true, app: false}}
9
8
  let (:app_option) { {user: false, app: true}}
10
9
  let (:user_session) {{login: 'login',token: 'jdijenfdeifiirifffjr'}.to_json}
11
- #let (:not_user_session) {{login: 'login',token: 'jdijenfd'}.to_json}
12
- let (:app_session) {{api_key: '01',token: 'jdijenfdeifiirifffjr'}.to_json}
13
- #let (:not_app_session) {{api_key: '02',token: 'jdijenfdeifiirr'}.to_json}
10
+ let (:app_session) {{api_key: '01',token: 'jdijenfdeifiirifffjr'}.to_json}
14
11
 
15
12
  before :each do
16
13
  redis=Redis.current
@@ -20,58 +17,141 @@ describe SessionManager::Handler do
20
17
  redis.sadd('applications_sessions',app_session)
21
18
 
22
19
  end
23
- describe "#create_session" do
20
+
21
+ describe ".create_session" do
24
22
  context "when a user's session is created" do
25
- it { expect(session_handler.create_session(login,user_option)).to be_true}
23
+ it { expect((SessionManager::Handler.create_session(login,user_option))[:code]).to eq 200}
26
24
  end
27
25
 
28
26
  context "When an app's session is created" do
29
- it { expect(session_handler.create_session(api_key,app_option)).to be_true }
27
+ it { expect((SessionManager::Handler.create_session(api_key,app_option))[:code]).to eq 200 }
28
+ end
29
+
30
+ context "When option is invalid" do
31
+ option = {u: true,a:false}
32
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
33
+
34
+ option = {user: true,app: true}
35
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
36
+
37
+ option = " "
38
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
39
+
40
+ option = {user: nil,app:false}
41
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
42
+
43
+ option = {user: "tata",app: "toto"}
44
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
45
+ end
46
+
47
+ context "When the object's column is invalid" do
48
+ api_key = {api_key: nil}.to_json
49
+ option = {user: false,app: true}
50
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
51
+
52
+ api_key ={api_key: 1}.to_json
53
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
54
+
55
+ login = {login: 'fatou'}
56
+ opt ={user: true,app:false}
57
+ it { expect((SessionManager::Handler.create_session(login,opt))[:code]).to eq 400 }
58
+ api_key = {ap: 'invalid'}.to_json
59
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
60
+
61
+ it { expect((SessionManager::Handler.create_session(nil,option))[:code]).to eq 400 }
62
+
63
+ it { expect((SessionManager::Handler.create_session(" ",option))[:code]).to eq 400 }
64
+ end
65
+
66
+ context "when the given attribute doesn't correspond to the option" do
67
+ api_key = {api_key: 'hhfrijijfri'}.to_json
68
+ option = {user: true,app: false}
69
+ it { expect((SessionManager::Handler.create_session(api_key,option))[:code]).to eq 400 }
70
+
30
71
  end
31
72
  end
32
73
 
33
- describe "#verify_session" do
74
+ describe ".verify_session" do
34
75
  context "when a user's session is found" do
35
- it { expect(session_handler.verify_session(user_session,user_option) ).to be_true}
76
+ it { expect((SessionManager::Handler.verify_session(user_session,user_option))[:code]).to eq 200}
36
77
  end
37
78
 
38
79
 
39
80
  context "when a user's session is not found" do
40
- not_user_session = {login: 'login',token: 'jdijenfd'}.to_json
41
- it { expect(session_handler.verify_session(not_user_session,user_option) ).to be_false}
81
+ not_user_session = {login: 'login',token: ''}.to_json
82
+ it { expect((SessionManager::Handler.verify_session(not_user_session,user_option))[:code]).to eq 400}
42
83
  end
43
-
84
+
85
+ context "when the user's session is not json" do
86
+ user_session = {login: 'login',token: 'jdijenfdeifiirr'}
87
+ it { expect((SessionManager::Handler.verify_session(user_session,user_option))[:code]).to eq 400}
88
+ end
89
+
90
+ context "when the param's keys are invalid" do
91
+ user_session = {logn: 'login',toke: 'jdijenfdeifiirr'}
92
+ it { expect((SessionManager::Handler.verify_session(user_session,user_option))[:code]).to eq 400}
93
+ end
94
+
95
+ context "when the param's values are not valid" do
96
+ user_session = {login: 1,token: 'jdijenfdeifiirr'}
97
+ it { expect((SessionManager::Handler.verify_session(user_session,user_option))[:code]).to eq 400}
98
+
99
+ user_session = {login: '',token: nil}
100
+ it { expect((SessionManager::Handler.verify_session(user_session,user_option))[:code]).to eq 400}
101
+ end
102
+
44
103
 
45
104
  context "when app's session is found" do
46
- it { expect(session_handler.verify_session(app_session,app_option) ).to be_true}
105
+ it { expect((SessionManager::Handler.verify_session(app_session,app_option))[:code]).to eq 200}
47
106
  end
48
107
 
49
108
  context "when app's session is not found" do
50
- not_app_session = {api_key: '02',token: 'jdijenfdeifiirr'}.to_json
51
- it { expect(session_handler.verify_session(not_app_session,app_option) ).to be_false}
109
+ not_app_session = {api_key: '02',token: 'jdijenfdeifi'}.to_json
110
+ it { expect((SessionManager::Handler.verify_session(not_app_session,app_option))[:code]).to eq 400}
52
111
  end
53
112
  end
54
113
 
55
- describe "#delete_session" do
114
+ describe ".delete_session" do
56
115
  context "when a user's session is deleted" do
57
- it { expect(session_handler.delete_session(user_session,user_option)).to be_true}
116
+ it { expect((SessionManager::Handler.delete_session(user_session,user_option))[:code]).to eq 200}
58
117
  end
59
118
 
60
119
  context "when a user's session is not deleted" do
61
120
  not_user_session = {login: 'login',token: 'jdijenfd'}.to_json
62
- it { expect(session_handler.delete_session(not_user_session,user_option)).to be_false}
121
+ it { expect((SessionManager::Handler.delete_session(not_user_session,user_option))[:code]).to eq 400}
122
+ end
123
+
124
+ context "when a user's session is not valid" do
125
+ not_user_session = {login: 'login',token: 'jdijenfdeifiir'}
126
+ it { expect((SessionManager::Handler.delete_session(not_user_session,user_option))[:code]).to eq 400}
127
+
128
+ not_user_session = {logn: 'login',tken: 'jdijenfdeifiir'}.to_json
129
+ it { expect((SessionManager::Handler.delete_session(not_user_session,user_option))[:code]).to eq 400}
130
+
131
+ not_user_session = {login: nil,token: nil}.to_json
132
+ it { expect((SessionManager::Handler.delete_session(not_user_session,user_option))[:code]).to eq 400}
133
+
134
+ not_user_session = {login: 1,token: 'jdijenfdeifiir'}.to_json
135
+ it { expect((SessionManager::Handler.delete_session(not_user_session,user_option))[:code]).to eq 400}
136
+
137
+ not_user_session = {login: '',token: 'jdijenfdeifiir'}.to_json
138
+ it { expect((SessionManager::Handler.delete_session(not_user_session,user_option))[:code]).to eq 400}
139
+
140
+ it { expect((SessionManager::Handler.delete_session(nil,user_option))[:code]).to eq 400}
141
+
142
+ it { expect((SessionManager::Handler.delete_session(nil,nil))[:code]).to eq 400}
143
+
63
144
  end
64
145
 
65
146
  context "when a app's session is found" do
66
- it { expect(session_handler.delete_session(app_session,app_option)).to be_true}
147
+ it { expect((SessionManager::Handler.delete_session(app_session,app_option))[:code]).to eq 200}
67
148
  end
68
149
 
69
150
  context "when a app's session is not found" do
70
151
  not_app_session = {api_key: '02',token: 'jdijenfdeifiirr'}.to_json
71
- it { expect(session_handler.delete_session(not_app_session,app_option)).to be_false}
152
+ it { expect((SessionManager::Handler.delete_session(not_app_session,app_option))[:code]).to eq 400}
72
153
  end
73
154
  end
74
-
75
-
155
+
76
156
 
77
157
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: session_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - fabira && atakem
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-16 00:00:00.000000000 Z
11
+ date: 2014-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,6 +98,86 @@ dependencies:
98
98
  - - ">="
99
99
  - !ruby/object:Gem::Version
100
100
  version: 2.3.7
101
+ - !ruby/object:Gem::Dependency
102
+ name: autotest
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '4.4'
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 4.4.6
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '4.4'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 4.4.6
121
+ - !ruby/object:Gem::Dependency
122
+ name: autotest-fsevent
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '0.2'
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 0.2.9
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.2'
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 0.2.9
141
+ - !ruby/object:Gem::Dependency
142
+ name: autotest-growl
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '0.2'
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 0.2.16
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '0.2'
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 0.2.16
161
+ - !ruby/object:Gem::Dependency
162
+ name: ZenTest
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '4.10'
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: 4.10.0
171
+ type: :development
172
+ prerelease: false
173
+ version_requirements: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - "~>"
176
+ - !ruby/object:Gem::Version
177
+ version: '4.10'
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: 4.10.0
101
181
  description: '"module that create,delete and verify users'' and apps'' sessions"'
102
182
  email:
103
183
  - fabira90@gmail.com, atacraft@gmail.com
@@ -113,7 +193,6 @@ files:
113
193
  - README.md
114
194
  - Rakefile
115
195
  - lib/session_manager.rb
116
- - lib/session_manager/base.rb
117
196
  - lib/session_manager/handler.rb
118
197
  - lib/session_manager/version.rb
119
198
  - session_manager.gemspec
@@ -1,22 +0,0 @@
1
- module Session_Manager
2
-
3
- class Base
4
- attr_accessor :redis, :uuid
5
-
6
- USERS_SESSIONS = 'users_sessions'
7
- APPS_SESSIONS = 'applications_sessions'
8
-
9
- def initialize
10
- @redis = Redis.current
11
- @uuid = UUID.new
12
- end
13
-
14
- def generate_token
15
- @uuid.generate
16
- end
17
-
18
- end
19
- end
20
-
21
-
22
-