dm-ldap-adapter 0.4.5-java → 0.4.6-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,34 @@
1
+ # no Gemfile.lock on git #
2
+
3
+ there are two references for different DM versions
4
+
5
+ * ~> 1.1.0
6
+
7
+ * ~> 1.0.0
8
+
9
+ with a simple symbolic link you can switch between these two profiles.
10
+
11
+ `$ ln -s Gemfile.lock.1.1.0 Gemfile.lock`
12
+
13
+ for that reason Gemfile.lock in not on github, so the script run-all.sh
14
+
15
+ # run specs #
16
+
17
+ `$ bundle exec spec spec`
18
+
19
+ or for some jruby versions (which needs jruby and ruby-maven gem)
20
+
21
+ `$ rmvn test`
22
+ `$ rmvn test --Djruby.versions=1.5.6,1.6.2 -Djruby.18and19
23
+
24
+ # build gem
25
+
26
+ for the ruby platform
27
+
28
+ `$ gem build dm-ldap-adapter.gemspec`
29
+
30
+ or for java platform (needs jruby and ruby-maven gem)
31
+
32
+ `$ rmvn package`
33
+
34
+ gem will be inside target/dm-ldap-adapter directory.
@@ -0,0 +1,17 @@
1
+ posix accounts/groups example
2
+ =============================
3
+
4
+ first you need to adjust the configuration for ldap adapter in `example/posix.rb` and then start irb
5
+
6
+ $ LDAP_PWD='secret' irb
7
+
8
+ require 'example/posix.rb'
9
+ u = User.create(:login=>'test', :name => "name", :password => "pwd")
10
+ User.all
11
+ g = Group.create(:name => "test")
12
+ Group.all
13
+ u.groups << g
14
+ u.groups
15
+ g.users
16
+ u.authenticate("wrong-pwd")
17
+ u.authenticate("pwd")
@@ -0,0 +1,166 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+ require 'slf4r/logger'
4
+ require 'slf4r/ruby_logger'
5
+ require 'dm-core'
6
+
7
+ $LOAD_PATH << Pathname(__FILE__).dirname.parent.expand_path + 'lib'
8
+
9
+ # Logging.init :debug, :info, :warn, :error
10
+
11
+ # appender = Logging::Appender.stdout
12
+ # appender.layout = Logging::Layouts::Pattern.new(:pattern => "%d [%-l] (%c) %m\n")
13
+ # logger = Logging::Logger.new(:root)
14
+ # logger.add_appenders(appender)
15
+ # logger.level = :debug
16
+ # logger.info "initialized logger . . ."
17
+
18
+ dummy = false # uncomment this to use ldap, dummy = false uses the database
19
+ unless dummy
20
+ require 'ldap_resource'
21
+
22
+ require 'adapters/ldap_adapter'
23
+
24
+ DataMapper.setup(:default, {
25
+ :adapter => 'ldap',
26
+ :host => 'localhost',
27
+ :port => '389',
28
+ :base => ENV['LDAP_BASE'] || "dc=example,dc=com",
29
+ :bind_name => "cn=admin," + (ENV['LDAP_BASE'] || "dc=example,dc=com"),
30
+ :password => ENV['LDAP_PWD'] || "behappy"
31
+ })
32
+ else
33
+ require 'dummy_ldap_resource'
34
+ DataMapper.setup(:default, 'sqlite3::memory:')
35
+ adapter = DataMapper.repository.adapter
36
+ def adapter.ldap_connection
37
+ con = Object.new
38
+ def con.open
39
+ yield
40
+ end
41
+ con
42
+ end
43
+ end
44
+
45
+ class User
46
+ include DataMapper::Resource
47
+
48
+ property :id, Serial, :field => "uidNumber"
49
+ property :login, String, :field => "uid"
50
+ property :hashed_password, String, :field => "userPassword"
51
+ property :name, String, :field => "cn"
52
+
53
+ has n, :group_users, :child_key => [:memberuid]
54
+
55
+ def groups
56
+ groups = GroupUser.all(:memberuid => login).collect{ |gu| gu.group }
57
+ def groups.user=(user)
58
+ @user = user
59
+ end
60
+ groups.user = self
61
+ def groups.<<(group)
62
+ unless member? group
63
+ GroupUser.create(:memberuid => @user.login, :gidnumber => group.id)
64
+ super
65
+ end
66
+ self
67
+ end
68
+ def groups.delete(group)
69
+ gu = GroupUser.first(:memberuid => @user.login, :gidnumber => group.id)
70
+ if gu
71
+ gu.destroy
72
+ super
73
+ end
74
+ end
75
+ groups
76
+ end
77
+
78
+ dn_prefix { |user| "uid=#{user.login}"}
79
+
80
+ treebase "ou=people"
81
+
82
+ ldap_properties do |user|
83
+ properties = { :objectclass => ["inetOrgPerson", "posixAccount", "shadowAccount"], :loginshell => "/bin/bash", :gidnumber => "10000" }
84
+ properties[:sn] = "#{user.name.sub(/.*\ /, "")}"
85
+ properties[:givenname] = "#{user.name.sub(/\ .*/, "")}"
86
+ properties[:homedirectory] = "/home/#{user.login}"
87
+ properties
88
+ end
89
+
90
+ def password=(password)
91
+ attribute_set(:hashed_password, Ldap::Digest.sha(password)) if password
92
+ end
93
+ end
94
+
95
+ class Group
96
+ include DataMapper::Resource
97
+ include Slf4r::Logger
98
+ property :id, Serial, :field => "gidNumber"
99
+ property :name, String, :field => "cn"
100
+
101
+ dn_prefix { |group| "cn=#{group.name}" }
102
+
103
+ treebase "ou=groups"
104
+
105
+ ldap_properties {{ :objectclass => "posixGroup"}}
106
+
107
+ def users
108
+ users = GroupUser.all(:gidnumber => id).collect{ |gu| gu.user }
109
+ def users.group=(group)
110
+ @group = group
111
+ end
112
+ users.group = self
113
+ def users.<<(user)
114
+ unless member? user
115
+ GroupUser.create(:memberuid => user.login, :gidnumber => @group.id)
116
+ super
117
+ end
118
+ self
119
+ end
120
+ def users.delete(user)
121
+ gu = GroupUser.first(:memberuid => user.login, :gidnumber => @group.id)
122
+ if gu
123
+ gu.destroy
124
+ super
125
+ end
126
+ end
127
+ users
128
+ end
129
+ end
130
+
131
+ class GroupUser
132
+ include DataMapper::Resource
133
+ include Slf4r::Logger
134
+
135
+ dn_prefix { |group_user| "cn=#{group_user.group.name}" }
136
+
137
+ treebase "ou=groups"
138
+
139
+ multivalue_field :memberuid
140
+
141
+ ldap_properties do |group_user|
142
+ {:cn=>"#{group_user.group.name}", :objectclass => "posixGroup"}
143
+ end
144
+ property :memberuid, String, :key => true#, :field => "memberUid"
145
+ property :gidnumber, Integer, :key => true#, :field => "gidNumber"
146
+
147
+ def group
148
+ Group.get!(gidnumber)
149
+ end
150
+
151
+ def group=(group)
152
+ gidnumber = group.id
153
+ end
154
+
155
+ def user
156
+ User.first(:login => memberuid)
157
+ end
158
+
159
+ def user=(user)
160
+ memberuid = user.login
161
+ end
162
+ end
163
+
164
+ if dummy
165
+ DataMapper.auto_migrate!
166
+ end
@@ -209,16 +209,22 @@ module DataMapper
209
209
  value = prop.get!(resource)
210
210
  if prop.class == ::Ldap::LdapArray
211
211
  props[prop.field.to_sym] = value unless value.nil? or value.size == 0
212
+ elsif ::DataMapper::Property::Boolean === prop
213
+ props[prop.field.to_sym] = value ? 'TRUE' : 'FALSE' unless value.nil?
212
214
  else
213
- props[prop.field.to_sym] = value.to_s unless value.nil?
215
+ props[prop.field.to_sym] = prop.dump(value).to_s unless value.nil?
214
216
  end
215
217
  key = prop if prop.serial?
216
218
  end
217
219
  resource_dup = resource.dup
218
- id = ldap.retrieve_next_id(resource.model.treebase,
219
- key_properties(resource).field)
220
- resource_dup.send("#{key_properties(resource).name}=".to_sym, id)
221
- props[key_properties(resource).field.to_sym] = "#{id}"
220
+
221
+ if props[key_properties(resource).field.to_sym].nil? then
222
+ id = ldap.retrieve_next_id(resource.model.treebase,
223
+ key_properties(resource).field)
224
+ resource_dup.send("#{key_properties(resource).name}=".to_sym, id)
225
+ props[key_properties(resource).field.to_sym] = "#{id}"
226
+ end
227
+
222
228
  key_value = begin
223
229
  ldap.create_object(resource.model.dn_prefix(resource_dup),
224
230
  resource.model.treebase,
@@ -65,13 +65,14 @@ module Ldap
65
65
  # @param Array of conditions for the search
66
66
  # @return Array of Hashes with a name/values pair for each attribute
67
67
  def read_objects(treebase, key_fields, conditions, field_names, order_field = nil)
68
- searchbase = base(treebase)
69
- filter = Conditions2Filter.convert(conditions)
70
68
 
71
69
  # If there is a :dn in the filter skip everything and look it up
72
70
  if dn = conditions.detect { |c| c[1] == "dn" } then
73
71
  searchbase = dn[2]
74
72
  filter = nil
73
+ else
74
+ searchbase = base(treebase)
75
+ filter = Conditions2Filter.convert(conditions)
75
76
  end
76
77
 
77
78
  result = []
metadata CHANGED
@@ -1,307 +1,215 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dm-ldap-adapter
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.4.5
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.4.6
6
6
  platform: java
7
- authors:
8
- - mkristian
9
- - xertres
10
- autorequire:
7
+ authors:
8
+ - mkristian
9
+ - xertres
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2011-12-14 00:00:00 Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: net-ldap
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - "="
23
- - !ruby/object:Gem::Version
24
- version: 0.2.2
25
- type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: slf4r
29
- prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - "="
34
- - !ruby/object:Gem::Version
35
- version: 0.4.2
36
- type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: dm-core
40
- prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - "="
45
- - !ruby/object:Gem::Version
46
- version: 1.2.0
47
- type: :runtime
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: addressable
51
- prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - "="
56
- - !ruby/object:Gem::Version
57
- version: 2.2.6
58
- type: :runtime
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: dm-transactions
62
- prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - "="
67
- - !ruby/object:Gem::Version
68
- version: 1.2.0
69
- type: :runtime
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: dm-sqlite-adapter
73
- prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - "="
78
- - !ruby/object:Gem::Version
79
- version: 1.2.0
80
- type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
83
- name: dm-do-adapter
84
- prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - "="
89
- - !ruby/object:Gem::Version
90
- version: 1.2.0
91
- type: :runtime
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
94
- name: data_objects
95
- prerelease: false
96
- requirement: &id008 !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - "="
100
- - !ruby/object:Gem::Version
101
- version: 0.10.7
102
- type: :runtime
103
- version_requirements: *id008
104
- - !ruby/object:Gem::Dependency
105
- name: do_sqlite3
106
- prerelease: false
107
- requirement: &id009 !ruby/object:Gem::Requirement
108
- none: false
109
- requirements:
110
- - - "="
111
- - !ruby/object:Gem::Version
112
- version: 0.10.7
113
- type: :runtime
114
- version_requirements: *id009
115
- - !ruby/object:Gem::Dependency
116
- name: do_jdbc
117
- prerelease: false
118
- requirement: &id010 !ruby/object:Gem::Requirement
119
- none: false
120
- requirements:
121
- - - "="
122
- - !ruby/object:Gem::Version
123
- version: 0.10.7
124
- type: :runtime
125
- version_requirements: *id010
126
- - !ruby/object:Gem::Dependency
127
- name: jdbc-sqlite3
128
- prerelease: false
129
- requirement: &id011 !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
132
- - - "="
133
- - !ruby/object:Gem::Version
134
- version: 3.6.14.2.056
135
- type: :runtime
136
- version_requirements: *id011
137
- - !ruby/object:Gem::Dependency
138
- name: dm-migrations
139
- prerelease: false
140
- requirement: &id012 !ruby/object:Gem::Requirement
141
- none: false
142
- requirements:
143
- - - "="
144
- - !ruby/object:Gem::Version
145
- version: 1.2.0
146
- type: :development
147
- version_requirements: *id012
148
- - !ruby/object:Gem::Dependency
149
- name: rspec
150
- prerelease: false
151
- requirement: &id013 !ruby/object:Gem::Requirement
152
- none: false
153
- requirements:
154
- - - "="
155
- - !ruby/object:Gem::Version
156
- version: 2.6.0
157
- type: :development
158
- version_requirements: *id013
159
- - !ruby/object:Gem::Dependency
160
- name: rspec-core
161
- prerelease: false
162
- requirement: &id014 !ruby/object:Gem::Requirement
163
- none: false
164
- requirements:
165
- - - "="
166
- - !ruby/object:Gem::Version
167
- version: 2.6.2
168
- type: :runtime
169
- version_requirements: *id014
170
- - !ruby/object:Gem::Dependency
171
- name: rspec-expectations
172
- prerelease: false
173
- requirement: &id015 !ruby/object:Gem::Requirement
174
- none: false
175
- requirements:
176
- - - "="
177
- - !ruby/object:Gem::Version
178
- version: 2.6.0
179
- type: :runtime
180
- version_requirements: *id015
181
- - !ruby/object:Gem::Dependency
182
- name: diff-lcs
183
- prerelease: false
184
- requirement: &id016 !ruby/object:Gem::Requirement
185
- none: false
186
- requirements:
187
- - - "="
188
- - !ruby/object:Gem::Version
189
- version: 1.1.3
190
- type: :runtime
191
- version_requirements: *id016
192
- - !ruby/object:Gem::Dependency
193
- name: rspec-mocks
194
- prerelease: false
195
- requirement: &id017 !ruby/object:Gem::Requirement
196
- none: false
197
- requirements:
198
- - - "="
199
- - !ruby/object:Gem::Version
200
- version: 2.6.0
201
- type: :runtime
202
- version_requirements: *id017
203
- - !ruby/object:Gem::Dependency
204
- name: bundler
205
- prerelease: false
206
- requirement: &id018 !ruby/object:Gem::Requirement
207
- none: false
208
- requirements:
209
- - - ">="
210
- - !ruby/object:Gem::Version
211
- version: 0.0.0
212
- type: :development
213
- version_requirements: *id018
214
- - !ruby/object:Gem::Dependency
215
- name: jruby-openssl
216
- prerelease: false
217
- requirement: &id019 !ruby/object:Gem::Requirement
218
- none: false
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: 0.0.0
223
- type: :runtime
224
- version_requirements: *id019
13
+ date: 2013-04-10 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: net-ldap
17
+ version_requirements: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.2'
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0.2'
28
+ none: false
29
+ prerelease: false
30
+ type: :runtime
31
+ - !ruby/object:Gem::Dependency
32
+ name: slf4r
33
+ version_requirements: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - "~>"
36
+ - !ruby/object:Gem::Version
37
+ version: 0.4.2
38
+ none: false
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: 0.4.2
44
+ none: false
45
+ prerelease: false
46
+ type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: dm-core
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ none: false
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.0'
60
+ none: false
61
+ prerelease: false
62
+ type: :runtime
63
+ - !ruby/object:Gem::Dependency
64
+ name: dm-transactions
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ none: false
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ none: false
77
+ prerelease: false
78
+ type: :runtime
79
+ - !ruby/object:Gem::Dependency
80
+ name: dm-sqlite-adapter
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '1.0'
86
+ none: false
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.0'
92
+ none: false
93
+ prerelease: false
94
+ type: :development
95
+ - !ruby/object:Gem::Dependency
96
+ name: dm-migrations
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.0'
102
+ none: false
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '1.0'
108
+ none: false
109
+ prerelease: false
110
+ type: :development
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.6'
118
+ none: false
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.6'
124
+ none: false
125
+ prerelease: false
126
+ type: :development
127
+ - !ruby/object:Gem::Dependency
128
+ name: jruby-openssl
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - '='
132
+ - !ruby/object:Gem::Version
133
+ version: 0.7.2
134
+ none: false
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - '='
138
+ - !ruby/object:Gem::Version
139
+ version: 0.7.2
140
+ none: false
141
+ prerelease: false
142
+ type: :runtime
225
143
  description: ldap adapter for datamapper which uses either net-ldap or ruby-ldap
226
- email:
227
- - m.kristian@web.de
228
- - ""
144
+ email:
145
+ - m.kristian@web.de
146
+ - ''
229
147
  executables: []
230
-
231
148
  extensions: []
232
-
233
- extra_rdoc_files:
234
- - History.txt
235
- - README.md
236
- - ldap-commands.txt
237
- files:
238
- - MIT-LICENSE
239
- - History.txt
240
- - README.md
241
- - ldap-commands.txt
242
- - lib/dm-ldap-adapter.rb
243
- - lib/ldap_resource.rb
244
- - lib/dummy_ldap_resource.rb
245
- - lib/adapters/ldap_adapter.rb
246
- - lib/adapters/noop_transaction.rb
247
- - lib/ldap/version.rb
248
- - lib/ldap/unboundid_ldap_facade.rb
249
- - lib/ldap/transactions.rb
250
- - lib/ldap/ruby_ldap_facade.rb
251
- - lib/ldap/digest.rb
252
- - lib/ldap/net_ldap_facade.rb
253
- - lib/ldap/conditions_2_filter.rb
254
- - lib/ldap/array.rb
255
- - spec/multi_value_attributes_spec.rb
256
- - spec/sorting_spec.rb
257
- - spec/multi_repository_spec.rb
258
- - spec/spec.opts
259
- - spec/spec_helper.rb
260
- - spec/ldap_adapter_spec.rb
261
- - spec/authentication_ldap_adapter_spec.rb
262
- - spec/assiociations_ldap_adapter_spec.rb
263
- - spec/ldap_array_spec.rb
264
- - spec/performance_spec.rb.omit
265
- - spec/support/group_user.rb
266
- - spec/support/resource_state.rb-
267
- - spec/support/user.rb
268
- - spec/support/test_contact.rb
269
- - spec/support/role.rb
270
- - spec/support/contact.rb.omit
271
- - spec/support/group.rb
149
+ extra_rdoc_files:
150
+ - History.txt
151
+ - README.md
152
+ - ldap-commands.txt
153
+ files:
154
+ - History.txt
155
+ - MIT-LICENSE
156
+ - ldap-commands.txt
157
+ - README.md
158
+ - README-example.md
159
+ - README-bundler.md
160
+ - lib/dm-ldap-adapter.rb
161
+ - lib/ldap_resource.rb
162
+ - lib/dummy_ldap_resource.rb
163
+ - lib/adapters/ldap_adapter.rb
164
+ - lib/adapters/noop_transaction.rb
165
+ - lib/ldap/version.rb
166
+ - lib/ldap/unboundid_ldap_facade.rb
167
+ - lib/ldap/transactions.rb
168
+ - lib/ldap/ruby_ldap_facade.rb
169
+ - lib/ldap/digest.rb
170
+ - lib/ldap/net_ldap_facade.rb
171
+ - lib/ldap/conditions_2_filter.rb
172
+ - lib/ldap/array.rb
173
+ - spec/multi_value_attributes_spec.rb
174
+ - spec/sorting_spec.rb
175
+ - spec/multi_repository_spec.rb
176
+ - spec/spec_helper.rb
177
+ - spec/ldap_adapter_spec.rb
178
+ - spec/authentication_ldap_adapter_spec.rb
179
+ - spec/assiociations_ldap_adapter_spec.rb
180
+ - spec/ldap_array_spec.rb
181
+ - spec/support/group_user.rb
182
+ - spec/support/user.rb
183
+ - spec/support/test_contact.rb
184
+ - spec/support/role.rb
185
+ - spec/support/group.rb
186
+ - example/posix.rb
272
187
  homepage: http://github.com/mkristian/dm-ldap-adapter
273
- licenses:
274
- - MIT-LICENSE
275
- post_install_message:
276
- rdoc_options:
277
- - --main
278
- - README.txt
279
- require_paths:
280
- - lib
281
- required_ruby_version: !ruby/object:Gem::Requirement
188
+ licenses: []
189
+ post_install_message:
190
+ rdoc_options:
191
+ - "--main"
192
+ - README.txt
193
+ require_paths:
194
+ - lib
195
+ required_ruby_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: !binary |-
200
+ MA==
282
201
  none: false
283
- requirements:
284
- - - ">="
285
- - !ruby/object:Gem::Version
286
- version: "0"
287
- required_rubygems_version: !ruby/object:Gem::Requirement
202
+ required_rubygems_version: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: !binary |-
207
+ MA==
288
208
  none: false
289
- requirements:
290
- - - ">="
291
- - !ruby/object:Gem::Version
292
- version: "0"
293
209
  requirements: []
294
-
295
- rubyforge_project:
296
- rubygems_version: 1.8.9
297
- signing_key:
210
+ rubyforge_project:
211
+ rubygems_version: 1.8.24
212
+ signing_key:
298
213
  specification_version: 3
299
- summary: ""
300
- test_files:
301
- - spec/multi_value_attributes_spec.rb
302
- - spec/sorting_spec.rb
303
- - spec/multi_repository_spec.rb
304
- - spec/ldap_adapter_spec.rb
305
- - spec/authentication_ldap_adapter_spec.rb
306
- - spec/assiociations_ldap_adapter_spec.rb
307
- - spec/ldap_array_spec.rb
214
+ summary: ''
215
+ test_files: []
@@ -1,65 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'dm-core/version'
4
- p DataMapper::VERSION
5
- describe DataMapper.repository(:ldap).adapter do
6
-
7
- describe 'sorting of big list' do
8
-
9
- before do
10
- DataMapper.repository(:ldap) do
11
- #User.all.destroy!
12
- first = 1501
13
- len = 1500
14
- (first..len).each do |i|
15
- p i
16
- Contact.create(:id => "login#{i}", :sn => "name#{Kernel.rand}")
17
- end
18
- end
19
- end
20
-
21
- it 'should load all and sort in timely manner' do
22
- expected = nil
23
- all = nil
24
-
25
- DataMapper.repository(:ldap) do
26
- #puts User.all.collect {|u| u.name }.join("\n")
27
- #p User.all.size
28
- fields = Contact.properties.defaults.dup.<<(Contact.properties[:mobile])
29
- start = Time.new
30
- all = Contact.all(:fields => fields)
31
- intermediate = Time.new
32
- all.each { |a| a.mobile }
33
- finished = Time.new
34
-
35
- p intermediate - start
36
- p finished - intermediate
37
- p finished - start
38
-
39
- end
40
- puts
41
- DataMapper.repository(:ldap) do
42
- #puts User.all.collect {|u| u.name }.join("\n")
43
- #p User.all.size
44
- fields = Contact.properties.defaults.dup.<<(Contact.properties[:mobile])
45
- start = Time.new
46
- all = Contact.all(:order => [:sn], :fields => fields)
47
- intermediate = Time.new
48
- all.each { |a| a.inspect }
49
- finished = Time.new
50
- expected = all.dup.sort do |u1, u2|
51
- u1.sn.upcase <=> u2.sn.upcase
52
- end
53
-
54
- p intermediate - start
55
- p finished - intermediate
56
- p finished - start
57
-
58
- # all.should == expected
59
- end
60
- #p all#.collect {|u| u.name }.join("\n")
61
-
62
- end
63
- end
64
-
65
- end
@@ -1,2 +0,0 @@
1
- --colour
2
- --loadby random
@@ -1,58 +0,0 @@
1
- class Contact
2
- include DataMapper::Resource
3
-
4
- def self.auto_upgrade!(args = nil)
5
- DataMapper.logger.warn("Skipping #{self.name}.auto_upgrade!")
6
- end
7
-
8
- def self.default_repository_name
9
- :ldap
10
- end
11
-
12
- def self.repository_name
13
- :ldap
14
- end
15
-
16
- property :id, Serial, :field => 'uid'
17
- property :cn, String, :required => true
18
- property :salutation, String, :lazy => [:view]
19
- property :title, String, :lazy => [:view]
20
- property :givenname, String
21
- property :sn, String, :required => true
22
- property :o, String
23
- property :postaladdress, String, :lazy => [:view]
24
- property :postalcode, String, :lazy => [:view]
25
- property :l, String
26
- property :st, String, :lazy => [:view]
27
- property :c, String, :lazy => [:view]
28
- property :telephonenumber, String
29
- property :facsimiletelephonenumber, String, :lazy => [:view]
30
- property :pager, String, :lazy => [:view]
31
- property :jpegphoto, LdapArray, :lazy => true
32
- property :mobile, String, :lazy => [:view]
33
- property :anniversary, String, :lazy => [:view]
34
- property :mail, LdapArray
35
- property :labeleduri, LdapArray, :lazy => [:view]
36
- property :marker, LdapArray, :lazy => [:view]
37
- property :description, LdapArray, :lazy => [:view]
38
-
39
- dn_prefix do |u|
40
- "uid=#{u.id}"
41
- end
42
-
43
- ldap_properties do |u|
44
- properties = { :objectclass => ['inetOrgPerson']}#, "posixAccount", "shadowAccount"]}#'contactPerson'] }
45
- properties
46
- end
47
-
48
- treebase 'ou=people'
49
-
50
- before :save, :fix_object
51
-
52
- private
53
-
54
- def fix_object
55
- self.cn = "#{self.givenname} #{self.sn}".strip
56
- end
57
-
58
- end
@@ -1,16 +0,0 @@
1
- #This needs some documentation.
2
-
3
- module DataMapper
4
- module Resource
5
- class State
6
-
7
- # a persisted/deleted resource
8
- class Deleted < Persisted
9
- def set(subject, value)
10
- warn 'Deleted resource cannot be modified ' + subject.inspect + ' ' + value.to_s + " " + @resource.inspect
11
- super
12
- end
13
- end
14
- end
15
- end
16
- end