session_manager 0.0.3 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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
-