goz 0.0.2 → 0.0.3

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.
@@ -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
+