yus 1.0.2 → 1.0.4

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/.gemtest DELETED
File without changes
data/README.txt DELETED
@@ -1,35 +0,0 @@
1
- = yus
2
-
3
- * http://scm.ywesee.com/?p=yus/.git;a=summary
4
-
5
- == DESCRIPTION:
6
-
7
- ywesee user server. Works with the ywesee webframework and all the ywesee
8
- software packages.
9
-
10
- == FEATURES/PROBLEMS:
11
-
12
- * Only runs on Ruby 1.8
13
-
14
- == REQUIREMENTS:
15
-
16
- * Install the following packages with gem:
17
-
18
- * needle (1.3.0)
19
- * pg (0.9.0)
20
- * postgres (0.7.9.2008.01.28)
21
- * flexmock (0.8.6) - to run the tests
22
-
23
- == INSTALL:
24
-
25
- * sudo gem install yus
26
-
27
- == DEVELOPERS:
28
-
29
- * Masaomi Hatakeyama
30
- * Zeno Davatz
31
- * Hannes Wyss (upto Version 1.0)
32
-
33
- == LICENSE:
34
-
35
- * GPLv2
data/test/suite.rb DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # TestSuite -- yus -- 02.06.2006 -- rwaltert@ywesee.com
3
-
4
- $: << File.dirname(File.expand_path(__FILE__))
5
-
6
- if /^1\.8/.match(RUBY_VERSION)
7
- gem 'minitest'
8
- require 'minitest/autorun'
9
- else
10
- require 'test/unit'
11
- end
12
-
13
- Dir.foreach(File.dirname(__FILE__)) { |file|
14
- require file if /^test_.*\.rb$/o.match(file)
15
- }
data/test/test_entity.rb DELETED
@@ -1,238 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # TestEntity -- yus -- 29.05.2006 -- hwyss@ywesee.com
3
-
4
-
5
- $: << File.expand_path('../lib', File.dirname(__FILE__))
6
-
7
- gem 'minitest'
8
- require 'minitest/autorun'
9
- require 'yus/entity'
10
-
11
- module Yus
12
- class TestEntity <Minitest::Test
13
- def setup
14
- @user = Entity.new('user')
15
- end
16
- def test_authenticate
17
- assert_equal(false, @user.authenticate(nil))
18
- @user.passhash = '12345abcde'
19
- assert_equal(false, @user.authenticate('abcde12345'))
20
- assert_equal(true, @user.authenticate('12345abcde'))
21
- end
22
- def test_authenticate_token
23
- assert_equal(false, @user.authenticate_token(nil))
24
- token = '123456'
25
- @user.set_token token, Time.now + 60
26
- other = '654321'
27
- @user.set_token other, Time.now + 60
28
- assert_equal(true, @user.authenticate_token(token))
29
- assert_equal(true, @user.authenticate_token(other))
30
- assert_equal(false, @user.authenticate_token(token))
31
- @user.set_token token, Time.now - 60
32
- assert_equal(false, @user.authenticate_token(token))
33
-
34
- # Be paranoid
35
- token = '123456'
36
- @user.set_token token, Time.now + 60
37
- other = '654321'
38
- @user.set_token other, Time.now + 60
39
- assert_equal(false, @user.authenticate_token('hacker'))
40
- assert_equal(false, @user.authenticate_token(token))
41
- assert_equal(false, @user.authenticate_token(other))
42
- end
43
- def test_join
44
- group1 = Entity.new('A Group')
45
- group2 = Entity.new('Another Group')
46
- assert_equal([], @user.affiliations)
47
- @user.join(group1)
48
- assert_equal([group1], @user.affiliations)
49
- @user.join(group1)
50
- assert_equal([group1], @user.affiliations)
51
- @user.join(group2)
52
- assert_equal([group1, group2], @user.affiliations)
53
- @user.join(group1)
54
- assert_equal([group1, group2], @user.affiliations)
55
- @user.join(group2)
56
- assert_equal([group1, group2], @user.affiliations)
57
- end
58
- def test_join__circular
59
- group1 = Entity.new('A Group')
60
- group2 = Entity.new('Another Group')
61
- assert_equal([], @user.affiliations)
62
- @user.join(group1)
63
- assert_raises(CircularAffiliationError) {
64
- group1.join(@user)
65
- }
66
- group1.join(group2)
67
- assert_raises(CircularAffiliationError) {
68
- group2.join(@user)
69
- }
70
- end
71
- def test_leave
72
- group1 = Entity.new('A Group')
73
- group2 = Entity.new('Another Group')
74
- group3 = Entity.new('A third Group')
75
- @user.affiliations.push(group1, group2, group3)
76
- assert_equal([group1, group2, group3], @user.affiliations)
77
- @user.leave(group2)
78
- assert_equal([group1, group3], @user.affiliations)
79
- @user.leave(group2)
80
- assert_equal([group1, group3], @user.affiliations)
81
- end
82
- def test_grant__action
83
- assert_equal(false, @user.allowed?('write'))
84
- @user.grant('write')
85
- assert_equal(true, @user.allowed?('write'))
86
- assert_equal(true, @user.allowed?('write', 'Article'))
87
- end
88
- def test_grant__action_class
89
- assert_equal(false, @user.allowed?('write'))
90
- @user.grant('write', 'Article')
91
- assert_equal(false, @user.allowed?('write'))
92
- assert_equal(true, @user.allowed?('write', 'Article'))
93
- end
94
- def test_allowed
95
- assert_equal(false, @user.allowed?('write', 'Article'))
96
- assert_equal(false, @user.allowed?('read', 'Article'))
97
- @user.grant('read', 'Article')
98
- assert_equal(false, @user.allowed?('write', 'Article'))
99
- assert_equal(true, @user.allowed?('read', 'Article'))
100
- assert_equal(false, @user.allowed?('write'))
101
- assert_equal(false, @user.allowed?('read'))
102
- end
103
- def test_allowed__delegated
104
- group1 = Entity.new('group1')
105
- assert_equal(false, @user.allowed?('write', 'Article'))
106
- group1.grant('read', 'Article')
107
- @user.join(group1)
108
- assert_equal(false, @user.allowed?('write', 'Article'))
109
- assert_equal(true, @user.allowed?('read', 'Article'))
110
- assert_equal(false, @user.allowed?('write'))
111
- assert_equal(false, @user.allowed?('read'))
112
- end
113
- def test_allowed__delegated__once_removed
114
- group1 = Entity.new('group1')
115
- group2 = Entity.new('group1')
116
- assert_equal(false, @user.allowed?('write', 'Article'))
117
- group1.grant('read', 'Article')
118
- group2.join(group1)
119
- @user.join(group2)
120
- assert_equal(false, @user.allowed?('write', 'Article'))
121
- assert_equal(true, @user.allowed?('read', 'Article'))
122
- assert_equal(false, @user.allowed?('write'))
123
- assert_equal(false, @user.allowed?('read'))
124
- end
125
- def test_privileged
126
- assert_equal(false, @user.privileged?('write', 'Article'))
127
- @user.grant('read', 'Article')
128
- assert_equal(false, @user.privileged?('write', 'Article'))
129
- assert_equal(true, @user.privileged?('read', 'Article'))
130
- assert_equal(false, @user.privileged?('write'))
131
- assert_equal(false, @user.privileged?('read'))
132
- end
133
- def test_privileged__delegated
134
- group1 = Entity.new('group1')
135
- assert_equal(false, @user.privileged?('write', 'Article'))
136
- group1.grant('read', 'Article')
137
- @user.join(group1)
138
- assert_equal(false, @user.privileged?('write', 'Article'))
139
- assert_equal(false, @user.privileged?('read', 'Article'))
140
- assert_equal(false, @user.privileged?('write'))
141
- assert_equal(false, @user.privileged?('read'))
142
- end
143
- def test_privileged_until
144
- assert_raises(NotPrivilegedError) {
145
- @user.privileged_until('read', 'Article')
146
- }
147
- assert_raises(NotPrivilegedError) {
148
- @user.privileged_until('write', 'Article')
149
- }
150
- @user.grant('read', 'Article')
151
- assert_nil(@user.privileged_until('read', 'Article'))
152
- assert_raises(NotPrivilegedError) {
153
- @user.privileged_until('read')
154
- }
155
- assert_raises(NotPrivilegedError) {
156
- @user.privileged_until('write', 'Article')
157
- }
158
- @user.grant('read', 'Article', Time.local(3000))
159
- assert_raises(NotPrivilegedError) {
160
- @user.privileged_until('read')
161
- }
162
- assert_equal(Time.local(3000),
163
- @user.privileged_until('read', 'Article'))
164
- assert_raises(NotPrivilegedError) {
165
- @user.privileged_until('write', 'Article')
166
- }
167
- @user.grant('read', :everything, Time.local(4000))
168
- assert_equal(Time.local(4000),
169
- @user.privileged_until('read', 'Article'))
170
- @user.grant('read', 'Article', Time.local(5000))
171
- assert_equal(Time.local(5000),
172
- @user.privileged_until('read', 'Article'))
173
- end
174
- def test_valid
175
- assert_equal(true, @user.valid?)
176
- @user.valid_from = Time.now + 100
177
- assert_equal(false, @user.valid?)
178
- @user.valid_until = Time.now - 100
179
- assert_equal(false, @user.valid?)
180
- @user.valid_from = Time.now - 200
181
- assert_equal(false, @user.valid?)
182
- @user.valid_until = Time.now + 100
183
- assert_equal(true, @user.valid?)
184
- @user.valid_until = nil
185
- assert_equal(true, @user.valid?)
186
- end
187
- def test_domain_based_preference
188
- assert_nil(@user.get_preference('other'))
189
- assert_nil(@user.get_preference('pref'))
190
- assert_nil(@user.get_preference('pref', 'domain'))
191
- assert_nil(@user.get_preference('pref', 'other'))
192
- @user.set_preference('pref', 'value', 'domain')
193
- assert_nil(@user.get_preference('other'))
194
- assert_nil(@user.get_preference('pref'))
195
- assert_equal('value', @user.get_preference('pref', 'domain'))
196
- assert_nil(@user.get_preference('pref', 'other'))
197
- @user.set_preference('pref', 'global')
198
- assert_nil(@user.get_preference('other'))
199
- assert_equal('global', @user.get_preference('pref'))
200
- assert_equal('value', @user.get_preference('pref', 'domain'))
201
- assert_equal('global', @user.get_preference('pref', 'other'))
202
- end
203
- def test_rename
204
- assert_equal('user', @user.name)
205
- @user.rename('renamed')
206
- assert_equal('renamed', @user.name)
207
- end
208
- def test_revoke__action
209
- assert_equal(false, @user.allowed?('write'))
210
- @user.grant('write')
211
- assert_equal(true, @user.allowed?('write'))
212
- @user.revoke('write')
213
- assert_equal(false, @user.allowed?('write'))
214
- end
215
- def test_to_s
216
- assert_equal('user', @user.to_s)
217
- end
218
- def test_info
219
- assert_equal ['user'], @user.info
220
- @user.grant('write')
221
- assert_equal ['user', ['write', [['everything']]]], @user.info
222
- @user.grant('write', 'Article')
223
- assert_equal ['user', ['write', [['Article'], ['everything']]]], @user.info
224
- group1 = Entity.new('group1')
225
- group1.grant('read', 'Article')
226
- @user.join(group1)
227
- assert_equal ['user', ['write', [['Article'], ['everything']]], ['group1']], @user.info
228
- group2 = Entity.new('group2')
229
- group2.grant('read', 'Journal')
230
- @user.join(group2)
231
- assert_equal ['user', ['write', [['Article'], ['everything']]], ['group1', 'group2']], @user.info
232
- assert_equal ['user', ['write', [['Article'], ['everything']]],
233
- ['group1', ['read', [['Article']]]],
234
- ['group2', ['read', [['Journal']]]]],
235
- @user.info(true)
236
- end
237
- end
238
- end
@@ -1,57 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # TestPrivilege -- yus -- 31.05.2006 -- hwyss@ywesee.com
3
-
4
- $: << File.expand_path('../lib', File.dirname(__FILE__))
5
-
6
- gem 'minitest'
7
- require 'minitest/autorun'
8
- require 'yus/privilege'
9
-
10
- module Yus
11
- class TestPrivilege <Minitest::Test
12
- def setup
13
- @privilege = Privilege.new
14
- end
15
- def test_grant
16
- assert_equal(false, @privilege.granted?('Article'))
17
- @privilege.grant('Article')
18
- assert_equal(false, @privilege.granted?('Book'))
19
- assert_equal(true, @privilege.granted?('Article'))
20
- end
21
- def test_grant__timed
22
- assert_equal(false, @privilege.granted?('Article'))
23
- @privilege.grant('Article', Time.now)
24
- assert_equal(false, @privilege.granted?('Article'))
25
- @privilege.grant('Article', Time.now + 0.5)
26
- assert_equal(true, @privilege.granted?('Article'))
27
- sleep(1)
28
- assert_equal(false, @privilege.granted?('Article'))
29
- end
30
- def test_grant__everything
31
- assert_equal(false, @privilege.granted?('Article'))
32
- @privilege.grant(:everything)
33
- assert_equal(true, @privilege.granted?('Article'))
34
- end
35
- def test_grant__wildcard
36
- assert_equal(false, @privilege.granted?('org.oddb.company'))
37
- @privilege.grant('org.oddb.*')
38
- assert_equal(true, @privilege.granted?('org.oddb.company'))
39
- assert_equal(false, @privilege.granted?('org.oddb'))
40
- assert_equal(false, @privilege.granted?('org.foo.company'))
41
- end
42
- def test_revoke
43
- @privilege.grant('Article')
44
- assert_equal(true, @privilege.granted?('Article'))
45
- @privilege.revoke('Article')
46
- assert_equal(false, @privilege.granted?('Article'))
47
- end
48
- def test_revoke__timed
49
- @privilege.grant('Article')
50
- assert_equal(true, @privilege.granted?('Article'))
51
- @privilege.revoke('Article', Time.now + 0.5)
52
- assert_equal(true, @privilege.granted?('Article'))
53
- sleep(1)
54
- assert_equal(false, @privilege.granted?('Article'))
55
- end
56
- end
57
- end
data/test/test_server.rb DELETED
@@ -1,127 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # TestServer -- yus -- 01.06.2006 -- hwyss@ywesee.com
3
-
4
- $: << File.expand_path('../lib', File.dirname(__FILE__))
5
-
6
- require 'yus/server'
7
- require 'flexmock'
8
-
9
- module Yus
10
- class Server
11
- public :authenticate, :clean
12
- end
13
- class TestServer < Minitest::Test
14
- def setup
15
- @config = FlexMock.new
16
- @config.should_receive(:cleaner_interval).and_return { 100000000 }
17
- digest = FlexMock.new
18
- digest.should_receive(:hexdigest).and_return { |input| input }
19
- @config.should_receive(:digest).and_return { digest }
20
- @config.should_receive(:session_timeout).and_return { 0.5 }
21
- @config.should_receive(:root_name).and_return { 'admin' }
22
- @config.should_receive(:root_pass).and_return { 'admin' }
23
- @logger = FlexMock.new
24
- @logger.should_receive(:info)
25
- @logger.should_receive(:debug)
26
- @persistence = FlexMock.new
27
- @server = Server.new(@persistence, @config, @logger)
28
- end
29
- def test_authenticate__no_user
30
- @logger.should_receive(:warn).times(1)
31
- @persistence.should_receive(:find_entity).times(1)
32
- assert_raises(UnknownEntityError) {
33
- @server.authenticate('name', 'password')
34
- }
35
- end
36
- def test_authenticate__wrong_password
37
- @logger.should_receive(:warn).times(1)
38
- user = FlexMock.new
39
- user.should_receive(:authenticate).and_return { false }
40
- @persistence.should_receive(:find_entity).times(1).and_return { user }
41
- assert_raises(AuthenticationError) {
42
- @server.authenticate('name', 'password')
43
- }
44
- end
45
- def test_authenticate__success
46
- user = FlexMock.new
47
- user.should_receive(:authenticate).and_return { |pass|
48
- assert_equal('password', pass)
49
- true
50
- }
51
- @persistence.should_receive(:find_entity).times(1).and_return { user }
52
- result = @server.authenticate('name', 'password')
53
- assert_equal(user, result)
54
- end
55
- def test_autosession
56
- @server.autosession('domain') { |session|
57
- assert_instance_of(AutoSession, session)
58
- }
59
- end
60
- def test_login__success
61
- user = FlexMock.new
62
- user.should_receive(:authenticate).and_return { |pass|
63
- assert_equal('password', pass)
64
- true
65
- }
66
- user.should_receive(:login)
67
- user.should_receive(:get_preference).and_return { |key, domain|
68
- {
69
- 'session_timeout' => 0.5,
70
- }[key]
71
- }
72
- @persistence.should_receive(:find_entity).times(1).and_return { user }
73
- @persistence.should_receive(:save_entity).times(1)
74
- session = @server.login('name', 'password', 'domain')
75
- assert_instance_of(EntitySession, session)
76
- assert_kind_of(DRb::DRbUndumped, session)
77
- assert_equal([session], @server.instance_variable_get('@sessions'))
78
- end
79
- def test_logout
80
- needle = FlexMock.new
81
- needle.should_receive(:config).and_return { @config }
82
- @config.should_receive(:session_timeout).and_return { 200 }
83
- sessions = @server.instance_variable_get('@sessions')
84
- session = RootSession.new(needle)
85
- sessions.push(session)
86
- @server.logout(session)
87
- assert_equal([], sessions)
88
- end
89
- def test_login__root
90
- session = @server.login('admin', 'admin', 'domain')
91
- assert_instance_of(RootSession, session)
92
- end
93
- def test_ping
94
- assert(@server.ping)
95
- end
96
- def test_clean
97
- needle = FlexMock.new
98
- needle.should_receive(:config).and_return { @config }
99
- @config.should_receive(:session_timeout).and_return { 0.5 }
100
- sessions = @server.instance_variable_get('@sessions')
101
- session = RootSession.new(needle)
102
- sessions.push(session)
103
- sleep(1)
104
- @server.clean
105
- assert_equal([], sessions)
106
- end
107
- end
108
- class TestServerCleaner < Minitest::Test
109
- def test_autoclean
110
- config = FlexMock.new
111
- config.should_receive(:cleaner_interval).and_return { 0.5 }
112
- config.should_receive(:session_timeout).and_return { 0.5 }
113
- logger = FlexMock.new
114
- logger.should_receive(:info)
115
- logger.should_receive(:debug)
116
- needle = FlexMock.new
117
- needle.should_receive(:config).and_return { config }
118
- persistence = FlexMock.new
119
- server = Server.new(persistence, config, logger)
120
- sessions = server.instance_variable_get('@sessions')
121
- session = RootSession.new(needle)
122
- sessions.push(session)
123
- sleep(2)
124
- assert_equal([], sessions)
125
- end
126
- end
127
- end