goz 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,15 +4,17 @@ require 'simplecov'
4
4
  SimpleCov.start
5
5
 
6
6
  require 'goz/cache/hash_store'
7
- require 'test/unit'
7
+ require 'goz/test_case'
8
8
 
9
9
 
10
- class TestGozCacheHashStore < Test::Unit::TestCase
10
+ class TestHashStoreCache < Goz::TestCase
11
11
 
12
12
  def setup
13
+ super
13
14
  @cache = Goz::Cache::HashStore.new
14
15
  end
15
16
 
17
+
16
18
  def test_default_initialization
17
19
  assert_kind_of Goz::Cache::HashStore, @cache
18
20
  end
@@ -4,19 +4,22 @@ require 'simplecov'
4
4
  SimpleCov.start
5
5
 
6
6
  require 'goz/logger'
7
+ require 'goz/test_case'
7
8
  require 'logger'
8
9
  require 'stringio'
9
- require 'test/unit'
10
10
 
11
11
 
12
- class TestGozLogger < Test::Unit::TestCase
12
+ class TestLogger < Goz::TestCase
13
13
 
14
14
  def setup
15
+ super
16
+
15
17
  @s = StringIO.new
16
18
  @logger = Logger.new(@s)
17
19
  @tag = self.class.name
18
20
  end
19
21
 
22
+
20
23
  def test_default_initialization
21
24
  blockable = false
22
25
  logger = Goz::Logger.new(@tag) do |logger|
@@ -0,0 +1,189 @@
1
+ # encoding: utf-8
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'goz/group'
7
+ require 'goz/test_case'
8
+ require 'goz/user'
9
+
10
+
11
+ class TestMembers < Goz::TestCase
12
+
13
+ def setup
14
+ super
15
+
16
+ @u1 = Goz::User.create( :email => 'u1', :login => 'u1', :identifier => 'u1', :name => 'u1' )
17
+ @u2 = Goz::User.create( :email => 'u2', :login => 'u2', :identifier => 'u2', :name => 'u2' )
18
+ @g1 = Goz::Group.create( :display_name => 'g1', :identifier => 'g1', :name => 'g1' )
19
+ @g2 = Goz::Group.create( :display_name => 'g2', :identifier => 'g2', :name => 'g2' )
20
+ end
21
+
22
+
23
+ def test_no_members_or_memberships
24
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
25
+ [ @u1, @u2 ].each do |u|
26
+ assert_not_nil u.memberships
27
+ assert_kind_of Array, u.memberships
28
+ assert_equal 0, u.memberships.size
29
+ end
30
+ [ @g1, @g2 ].each do |g|
31
+ assert_not_nil g.members
32
+ assert_kind_of Array, g.members
33
+ assert_equal 0, g.members.size
34
+ end
35
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
36
+ end
37
+
38
+ def test_add_member_to_group
39
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
40
+ @g1.add_member(@u1)
41
+ @g1.save
42
+ assert_equal 1, @g1.members.size
43
+ assert_equal 0, @g2.members.size
44
+ assert_equal @u1, @g1.members.first
45
+ assert_nil @g2.members.first
46
+ assert_equal 1, @u1.memberships.size
47
+ assert_equal 0, @u2.memberships.size
48
+ assert_equal @g1, @u1.memberships.first
49
+ assert_nil @u2.memberships.first
50
+ Goz::Database.instance do |db|
51
+ assert_equal 1, db[:members].count
52
+ first = db[:members].first
53
+ assert_equal @g1.id, first[:group_id]
54
+ assert_equal @u1.id, first[:user_id]
55
+ end
56
+ end
57
+
58
+ def test_add_membership_to_user
59
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
60
+ @u1.add_membership(@g1)
61
+ @u1.save
62
+ assert_equal 1, @g1.members.size
63
+ assert_equal 0, @g2.members.size
64
+ assert_equal @u1, @g1.members.first
65
+ assert_nil @g2.members.first
66
+ assert_equal 1, @u1.memberships.size
67
+ assert_equal 0, @u2.memberships.size
68
+ assert_equal @g1, @u1.memberships.first
69
+ assert_nil @u2.memberships.first
70
+ Goz::Database.instance do |db|
71
+ assert_equal 1, db[:members].count
72
+ first = db[:members].first
73
+ assert_equal @g1.id, first[:group_id]
74
+ assert_equal @u1.id, first[:user_id]
75
+ end
76
+ end
77
+
78
+ def test_remove_member_from_group
79
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
80
+ @g1.add_member(@u1)
81
+ @g1.add_member(@u2)
82
+ @g1.save
83
+ assert_equal 2, @g1.members.size
84
+ assert_equal [ @u1, @u2 ], @g1.members
85
+
86
+ @g1.remove_member(@u2)
87
+ @g1.save
88
+ assert_equal 1, @g1.members.size
89
+ assert_equal [ @u1 ], @g1.members
90
+
91
+ Goz::Database.instance do |db|
92
+ assert_equal 1, db[:members].count
93
+ first = db[:members].first
94
+ assert_equal @g1.id, first[:group_id]
95
+ assert_equal @u1.id, first[:user_id]
96
+ end
97
+ end
98
+
99
+ def test_remove_membership_from_user
100
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
101
+ @u1.add_membership(@g1)
102
+ @u1.add_membership(@g2)
103
+ @u1.save
104
+ assert_equal 2, @u1.memberships.size
105
+ assert_equal [ @g1, @g2 ], @u1.memberships
106
+
107
+ @u1.remove_membership(@g2)
108
+ @u1.save
109
+ assert_equal 1, @u1.memberships.size
110
+ assert_equal [ @g1 ], @u1.memberships
111
+
112
+ Goz::Database.instance do |db|
113
+ assert_equal 1, db[:members].count
114
+ first = db[:members].first
115
+ assert_equal @g1.id, first[:group_id]
116
+ assert_equal @u1.id, first[:user_id]
117
+ end
118
+ end
119
+
120
+ def test_add_duplicate_member_to_group
121
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
122
+ @g1.add_member(@u1)
123
+ @g1.save
124
+ assert_equal 1, @g1.members.size
125
+ assert_equal [ @u1 ], @g1.members
126
+
127
+ assert_raise(Sequel::DatabaseError) { @g1.add_member(@u1) }
128
+ assert_equal 1, @g1.members.size
129
+ assert_equal [ @u1 ], @g1.members
130
+
131
+ Goz::Database.instance do |db|
132
+ assert_equal 1, db[:members].count
133
+ first = db[:members].first
134
+ assert_equal @g1.id, first[:group_id]
135
+ assert_equal @u1.id, first[:user_id]
136
+ end
137
+ end
138
+
139
+ def test_add_duplicate_membership_to_user
140
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
141
+ @u1.add_membership(@g1)
142
+ @u1.save
143
+ assert_equal 1, @u1.memberships.size
144
+ assert_equal [ @g1 ], @u1.memberships
145
+
146
+ assert_raise(Sequel::DatabaseError) { @u1.add_membership(@g1) }
147
+ assert_equal 1, @u1.memberships.size
148
+ assert_equal [ @g1 ], @u1.memberships
149
+
150
+ Goz::Database.instance do |db|
151
+ assert_equal 1, db[:members].count
152
+ first = db[:members].first
153
+ assert_equal @g1.id, first[:group_id]
154
+ assert_equal @u1.id, first[:user_id]
155
+ end
156
+ end
157
+
158
+ def test_delete_group
159
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
160
+ @g1.add_member(@u1)
161
+ @g1.save
162
+ assert_equal 1, @g1.members.size
163
+ assert_equal [ @u1 ], @g1.members
164
+
165
+ @g1.destroy
166
+ assert_nil Goz::Group.find_by_name( @g1.name )
167
+
168
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
169
+
170
+ assert_equal [], @u1.memberships
171
+ end
172
+
173
+ def test_delete_user
174
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
175
+ @u1.add_membership(@g1)
176
+ @u1.save
177
+ assert_equal 1, @u1.memberships.size
178
+ assert_equal [ @g1 ], @u1.memberships
179
+
180
+ @u1.destroy
181
+ assert_nil Goz::User.find_by_login( @u1.login )
182
+
183
+ Goz::Database.instance { |db| assert_equal 0, db[:members].count }
184
+
185
+ assert_equal [], @g1.members
186
+ end
187
+
188
+ end
189
+
@@ -0,0 +1,150 @@
1
+ # encoding: utf-8
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'goz/service'
7
+ require 'goz/test_case'
8
+
9
+
10
+ class TestService < Goz::TestCase
11
+
12
+ def setup
13
+ super
14
+ end
15
+
16
+
17
+ def test_no_services
18
+ Goz::Database.instance { |db| assert_equal 0, db[:services].count }
19
+ end
20
+
21
+ def test_default_initialization
22
+ blockable = false
23
+ service = Goz::Service.new do |s|
24
+ assert_kind_of Goz::Service, s
25
+ assert_nil s.name
26
+ assert_nil s.klass
27
+ assert_nil s.created_at
28
+ assert_nil s.modified_at
29
+ assert_nil s.synchronized_at
30
+ blockable = true
31
+ end
32
+ assert blockable, 'works as block'
33
+ assert_kind_of Goz::Service, service
34
+ assert_kind_of Goz::Service, Goz::Service.new
35
+ assert_nil service.name
36
+ assert_nil service.klass
37
+ assert_nil service.created_at
38
+ assert_nil service.modified_at
39
+ assert_nil service.synchronized_at
40
+ end
41
+
42
+ def test_find_by_name_for_service_that_does_not_exist
43
+ assert_nil Goz::Service.find_by_name( @services[:a][:name] )
44
+ end
45
+
46
+ def test_create_with_invalid_parameters
47
+ assert_raise(RuntimeError, 'invalid name') { Goz::Service.create(nil) }
48
+ assert_raise(RuntimeError, 'invalid name') {
49
+ Goz::Service.create( :klass => @services[:a][:klass] )
50
+ }
51
+ assert_raise(RuntimeError, 'invalid name') {
52
+ Goz::Service.create( :name => '',
53
+ :klass => @services[:a][:klass]
54
+ )
55
+ }
56
+ assert_raise(RuntimeError, 'invalid klass') {
57
+ Goz::Service.create( :name => @services[:a][:name] )
58
+ }
59
+ assert_raise(RuntimeError, 'invalid klass') {
60
+ Goz::Service.create( :name => @services[:a][:name],
61
+ :klass => nil
62
+ )
63
+ }
64
+ assert_raise(RuntimeError, 'invalid klass') {
65
+ Goz::Service.create( :name => @services[:a][:name],
66
+ :klass => ''
67
+ )
68
+ }
69
+ end
70
+
71
+ def test_create
72
+ t = Time.now
73
+ s = Goz::Service.create @services[:a]
74
+ assert_not_nil s
75
+ assert_kind_of Goz::Service, s
76
+ assert_equal @services[:a][:name], s.name
77
+ assert_equal @services[:a][:klass], s.klass
78
+ assert_not_nil s.created_at
79
+ assert s.created_at >= t
80
+ end
81
+
82
+ def test_update
83
+ s = Goz::Service.create @services[:a]
84
+ s.name = s.name.reverse
85
+ s.save
86
+
87
+ assert_not_nil s.modified_at
88
+ assert_kind_of Time, s.modified_at
89
+ assert s.modified_at > s.created_at
90
+ assert_nil s.synchronized_at
91
+ end
92
+
93
+ def test_equality
94
+ s1 = Goz::Service.create @services[:a]
95
+ assert_not_nil s1
96
+
97
+ s2 = Goz::Service.find_by_name( s1.name )
98
+ assert_not_nil s2
99
+ assert_equal s1, s2
100
+
101
+ s3 = Goz::Service.create @services[:b]
102
+
103
+ assert_not_nil s3
104
+ assert_not_equal s1, s3
105
+ assert_not_equal s2, s3
106
+ end
107
+
108
+ def test_find_by_name_and_persistence
109
+ assert_nil Goz::Service.find_by_name @services[:a][:name]
110
+
111
+ s1 = Goz::Service.create @services[:a]
112
+ assert_not_nil s1
113
+
114
+ s2 = Goz::Service.find_by_name s1.name
115
+ assert_not_nil s2
116
+ assert_kind_of Goz::Service, s2
117
+ assert_equal s1, s2
118
+ end
119
+
120
+ def test_sync
121
+ s = Goz::Service.create @services[:a]
122
+ assert_nil s.synchronized_at
123
+
124
+ t = Time.now
125
+ assert s.sync
126
+
127
+ assert_not_nil s.modified_at
128
+ assert s.modified_at > t
129
+ assert_not_nil s.synchronized_at
130
+ assert s.synchronized_at > t
131
+
132
+ t = Time.now
133
+ assert !s.sync
134
+
135
+ assert_not_nil s.modified_at
136
+ assert s.modified_at < t
137
+ assert_not_nil s.synchronized_at
138
+ assert s.synchronized_at < t
139
+
140
+ t = Time.now
141
+ assert s.sync(true)
142
+
143
+ assert_not_nil s.modified_at
144
+ assert s.modified_at > t
145
+ assert_not_nil s.synchronized_at
146
+ assert s.synchronized_at > t
147
+ end
148
+
149
+ end
150
+
@@ -0,0 +1,205 @@
1
+ # encoding: utf-8
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'goz/test_case'
7
+ require 'goz/user'
8
+
9
+
10
+ class TestUser < Goz::TestCase
11
+
12
+ def setup
13
+ super
14
+
15
+ @email = 'foo@example.org' # XXX
16
+ @login = 'foo' # XXX
17
+ @identifier = 'd3b07384d113edec49eaa6238ad5ff00' # XXX
18
+ @name = 'Foo User' # XXX
19
+ end
20
+
21
+
22
+ def test_default_initialization
23
+ blockable = false
24
+ user = Goz::User.new do |user|
25
+ assert_kind_of Goz::User, user
26
+ assert_nil user.email
27
+ assert_nil user.login
28
+ assert_nil user.identifier
29
+ assert_nil user.name
30
+ assert_nil user.created_at
31
+ assert_nil user.modified_at
32
+ assert_nil user.modified_at
33
+ blockable = true
34
+ end
35
+ assert blockable, 'works as block'
36
+ assert_kind_of Goz::User, user
37
+ assert_kind_of Goz::User, Goz::User.new
38
+ assert_nil user.email
39
+ assert_nil user.login
40
+ assert_nil user.identifier
41
+ assert_nil user.name
42
+ assert_nil user.created_at
43
+ assert_nil user.modified_at
44
+ assert_nil user.modified_at
45
+ end
46
+
47
+ def test_find_by_login_for_user_that_does_not_exist
48
+ assert_nil Goz::User.find_by_login @users[:a][:login]
49
+ end
50
+
51
+ def test_create_with_invalid_parameters
52
+ assert_raise(RuntimeError, 'invalid email') { Goz::User.create(nil) }
53
+ assert_raise(RuntimeError, 'invalid email') {
54
+ Goz::User.create( :identifier => @identifier,
55
+ :login => @login,
56
+ :name => @name
57
+ )
58
+ }
59
+ assert_raise(RuntimeError, 'invalid email') {
60
+ Goz::User.create( :email => '',
61
+ :identifier => @identifier,
62
+ :login => @login,
63
+ :name => @name
64
+ )
65
+ }
66
+ assert_raise(RuntimeError, 'invalid identifier') {
67
+ Goz::User.create( :email => @email,
68
+ :login => @login,
69
+ :name => @name
70
+ )
71
+ }
72
+ assert_raise(RuntimeError, 'invalid identifier') {
73
+ Goz::User.create( :email => @email,
74
+ :identifier => '',
75
+ :login => @login,
76
+ :name => @name
77
+ )
78
+ }
79
+ assert_raise(RuntimeError, 'invalid login') {
80
+ Goz::User.create( :email => @email,
81
+ :identifier => @identifier,
82
+ :name => @name
83
+ )
84
+ }
85
+ assert_raise(RuntimeError, 'invalid login') {
86
+ Goz::User.create( :email => @email,
87
+ :identifier => @identifier,
88
+ :login => '',
89
+ :name => @name
90
+ )
91
+ }
92
+ assert_raise(RuntimeError, 'invalid name') {
93
+ Goz::User.create( :email => @email,
94
+ :identifier => @identifier,
95
+ :login => @login
96
+ )
97
+ }
98
+ assert_raise(RuntimeError, 'invalid name') {
99
+ Goz::User.create( :email => @email,
100
+ :identifier => @identifier,
101
+ :login => @login,
102
+ :name => ''
103
+ )
104
+ }
105
+ end
106
+
107
+ def test_create
108
+ t = Time.now
109
+ u = Goz::User.create( :email => @email,
110
+ :identifier => @identifier,
111
+ :login => @login,
112
+ :name => @name
113
+ )
114
+ assert_not_nil u
115
+ assert_kind_of Goz::User, u
116
+ assert_equal @email, u.email
117
+ assert_equal @identifier, u.identifier
118
+ assert_equal @login, u.login
119
+ assert_equal @name, u.name
120
+ assert_not_nil u.created_at
121
+ assert u.created_at >= t
122
+ end
123
+
124
+ def test_update
125
+ u = Goz::User.create( :email => @email,
126
+ :identifier => @identifier,
127
+ :login => @login,
128
+ :name => @name
129
+ )
130
+ u.name = u.name.reverse
131
+ u.save
132
+
133
+ assert_not_nil u.modified_at
134
+ assert_kind_of Time, u.modified_at
135
+ assert u.modified_at > u.created_at
136
+
137
+ assert_nil u.synchronized_at
138
+ end
139
+
140
+ def test_equality
141
+ u1 = Goz::User.create( :email => @email,
142
+ :identifier => @identifier,
143
+ :login => @login,
144
+ :name => @name
145
+ )
146
+ assert_not_nil u1
147
+
148
+ u2 = Goz::User.find_by_login( u1.login )
149
+ assert_not_nil u2
150
+ assert_equal u1, u2
151
+
152
+ u3 = Goz::User.create( :email => @email.reverse,
153
+ :identifier => @identifier.reverse,
154
+ :login => @login.reverse,
155
+ :name => @name.reverse
156
+ )
157
+ assert_not_nil u3
158
+ assert_not_equal u1, u3
159
+ assert_not_equal u2, u3
160
+ end
161
+
162
+ def test_find_by_login_and_persistence
163
+ u1 = Goz::User.find_by_login(@login)
164
+ assert_nil u1
165
+
166
+ u1 = Goz::User.create( :email => @email,
167
+ :identifier => @identifier,
168
+ :login => @login,
169
+ :name => @name
170
+ )
171
+
172
+ u2 = Goz::User.find_by_login(@login)
173
+ assert_not_nil u2
174
+ assert_kind_of Goz::User, u2
175
+ assert_equal u1, u2
176
+ end
177
+
178
+ def test_sync
179
+ u = Goz::User.create @users[:a]
180
+ assert_nil u.synchronized_at
181
+
182
+ t = Time.now
183
+ assert u.sync
184
+ assert_not_nil u.modified_at
185
+ assert u.modified_at.to_f > t.to_f
186
+ assert_not_nil u.synchronized_at
187
+ assert u.synchronized_at.to_f > t.to_f
188
+
189
+ t = Time.now
190
+ assert !u.sync
191
+ assert_not_nil u.modified_at
192
+ assert u.modified_at.to_f < t.to_f
193
+ assert_not_nil u.synchronized_at
194
+ assert u.synchronized_at.to_f < t.to_f
195
+
196
+ t = Time.now
197
+ assert u.sync(true)
198
+ assert_not_nil u.modified_at
199
+ assert u.modified_at.to_f > t.to_f
200
+ assert_not_nil u.synchronized_at
201
+ assert u.synchronized_at.to_f > t.to_f
202
+ end
203
+
204
+ end
205
+