ladle 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/ASL20-LICENSE +343 -0
  2. data/CHANGELOG.md +4 -0
  3. data/LICENSE +20 -0
  4. data/NOTICE +52 -0
  5. data/README.md +121 -0
  6. data/lib/ladle.rb +13 -0
  7. data/lib/ladle/Ladle.iml +13 -0
  8. data/lib/ladle/apacheds/antlr-2.7.6.jar +0 -0
  9. data/lib/ladle/apacheds/apacheds-core-1.0.2.jar +0 -0
  10. data/lib/ladle/apacheds/apacheds-core-shared-1.0.2.jar +0 -0
  11. data/lib/ladle/apacheds/apacheds-kerberos-shared-1.0.2.jar +0 -0
  12. data/lib/ladle/apacheds/apacheds-protocol-changepw-1.0.2.jar +0 -0
  13. data/lib/ladle/apacheds/apacheds-protocol-kerberos-1.0.2.jar +0 -0
  14. data/lib/ladle/apacheds/apacheds-protocol-ldap-1.0.2.jar +0 -0
  15. data/lib/ladle/apacheds/apacheds-protocol-ntp-1.0.2.jar +0 -0
  16. data/lib/ladle/apacheds/apacheds-protocol-shared-1.0.2.jar +0 -0
  17. data/lib/ladle/apacheds/apacheds-server-jndi-1.0.2.jar +0 -0
  18. data/lib/ladle/apacheds/apacheds-server-main-1.0.2.jar +0 -0
  19. data/lib/ladle/apacheds/apacheds-server-ssl-1.0.2.jar +0 -0
  20. data/lib/ladle/apacheds/backport-util-concurrent-2.2.jar +0 -0
  21. data/lib/ladle/apacheds/commons-cli-1.0.jar +0 -0
  22. data/lib/ladle/apacheds/commons-collections-3.2.jar +0 -0
  23. data/lib/ladle/apacheds/commons-io-1.4.jar +0 -0
  24. data/lib/ladle/apacheds/commons-lang-2.1.jar +0 -0
  25. data/lib/ladle/apacheds/jcl-over-slf4j-1.5.6.jar +0 -0
  26. data/lib/ladle/apacheds/jdbm-1.0.jar +0 -0
  27. data/lib/ladle/apacheds/log4j-1.2.14.jar +0 -0
  28. data/lib/ladle/apacheds/mina-core-1.0.2.jar +0 -0
  29. data/lib/ladle/apacheds/mina-filter-ssl-1.0.2.jar +0 -0
  30. data/lib/ladle/apacheds/shared-asn1-0.9.5.5.jar +0 -0
  31. data/lib/ladle/apacheds/shared-asn1-codec-0.9.5.5.jar +0 -0
  32. data/lib/ladle/apacheds/shared-ldap-0.9.5.5.jar +0 -0
  33. data/lib/ladle/apacheds/slf4j-api-1.5.6.jar +0 -0
  34. data/lib/ladle/apacheds/slf4j-log4j12-1.5.6.jar +0 -0
  35. data/lib/ladle/apacheds/spring-beans-1.2.8.jar +0 -0
  36. data/lib/ladle/apacheds/spring-context-1.2.8.jar +0 -0
  37. data/lib/ladle/apacheds/spring-core-1.2.8.jar +0 -0
  38. data/lib/ladle/apacheds/xercesImpl-2.0.2.jar +0 -0
  39. data/lib/ladle/default.ldif +292 -0
  40. data/lib/ladle/java/net/detailedbalance/ladle/LadleFatalException.class +0 -0
  41. data/lib/ladle/java/net/detailedbalance/ladle/LadleFatalException.java +14 -0
  42. data/lib/ladle/java/net/detailedbalance/ladle/Main$1.class +0 -0
  43. data/lib/ladle/java/net/detailedbalance/ladle/Main.class +0 -0
  44. data/lib/ladle/java/net/detailedbalance/ladle/Main.java +141 -0
  45. data/lib/ladle/java/net/detailedbalance/ladle/Server.class +0 -0
  46. data/lib/ladle/java/net/detailedbalance/ladle/Server.java +170 -0
  47. data/lib/ladle/jruby_process.rb +61 -0
  48. data/lib/ladle/ruby_process.rb +46 -0
  49. data/lib/ladle/server.rb +334 -0
  50. data/lib/ladle/version.rb +5 -0
  51. data/spec/ladle/animals.ldif +28 -0
  52. data/spec/ladle/server_spec.rb +306 -0
  53. data/spec/ladle/version_spec.rb +11 -0
  54. data/spec/spec_helper.rb +32 -0
  55. metadata +201 -0
@@ -0,0 +1,5 @@
1
+ module Ladle
2
+ ##
3
+ # The current version number for Ladle.
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,28 @@
1
+ version: 1
2
+
3
+ dn: ou=animals,dc=example,dc=net
4
+ objectClass: top
5
+ objectClass: organizationalUnit
6
+ ou: animals
7
+
8
+ dn: uid=aa927,ou=animals,dc=example,dc=net
9
+ objectClass: top
10
+ objectClass: person
11
+ objectClass: organizationalPerson
12
+ objectClass: inetOrgPerson
13
+ cn: Ada Aardvark
14
+ sn: Aardvark
15
+ givenName: Ada
16
+ mail: ada@example.net
17
+ uid: aa927
18
+
19
+ dn: uid=bb954,ou=animals,dc=example,dc=net
20
+ objectClass: top
21
+ objectClass: person
22
+ objectClass: organizationalPerson
23
+ objectClass: inetOrgPerson
24
+ cn: Bob Badger
25
+ sn: Badger
26
+ givenName: Bob
27
+ mail: badger@example.net
28
+ uid: bb954
@@ -0,0 +1,306 @@
1
+ require File.expand_path("../../spec_helper.rb", __FILE__)
2
+
3
+ require 'net/ldap'
4
+
5
+ describe Ladle, "::Server" do
6
+ def create_server(opts = {})
7
+ Ladle::Server.new({ :quiet => true, :tmpdir => tmpdir }.merge(opts))
8
+ end
9
+
10
+ before do
11
+ @server = create_server
12
+ end
13
+
14
+ after do
15
+ @server.stop
16
+
17
+ left_over_pids = `ps`.split("\n").grep(/net.detailedbalance.ladle.Main/).
18
+ collect { |line| line.split(/\s+/)[0].to_i }
19
+ left_over_pids.each { |pid|
20
+ $stderr.puts "Killing leftover process #{pid}"
21
+ Process.kill 15, pid
22
+ }
23
+ left_over_pids.should be_empty
24
+ end
25
+
26
+ describe "initialization of" do
27
+ def preserve_and_wipe_env(*env_vars)
28
+ @old_env = env_vars.inject({}) { |e, k| e[k] = ENV[k]; e }
29
+ @old_env.keys.each { |k| ENV[k] = nil }
30
+ end
31
+
32
+ def restore_env
33
+ @old_env.each { |k, v| ENV[k] = v }
34
+ end
35
+
36
+ describe ":port" do
37
+ it "defaults to 3897" do
38
+ Ladle::Server.new.port.should == 3897
39
+ end
40
+
41
+ it "can be overridden" do
42
+ Ladle::Server.new(:port => 4200).port.should == 4200
43
+ end
44
+ end
45
+
46
+ describe ":domain" do
47
+ it "defaults to dc=example,dc=org" do
48
+ Ladle::Server.new.domain.should == "dc=example,dc=org"
49
+ end
50
+
51
+ it "can be overridden" do
52
+ Ladle::Server.new(:domain => "dc=northwestern,dc=edu").domain.
53
+ should == "dc=northwestern,dc=edu"
54
+ end
55
+
56
+ it "rejects a domain that doesn't start with 'dc='" do
57
+ lambda { Ladle::Server.new(:domain => "foo") }.
58
+ should raise_error("The domain component must start with 'dc='. 'foo' does not.")
59
+ end
60
+ end
61
+
62
+ describe ":ldif" do
63
+ it "defaults to lib/ladle/default.ldif" do
64
+ Ladle::Server.new.ldif.should =~ %r{lib/ladle/default.ldif$}
65
+ end
66
+
67
+ it "can be overridden" do
68
+ ldif_file = "#{tmpdir}/foo.ldif"
69
+ FileUtils.touch ldif_file
70
+ Ladle::Server.new(:ldif => ldif_file).ldif.should == ldif_file
71
+ end
72
+
73
+ it "fails if the file can't be read" do
74
+ lambda { Ladle::Server.new(:ldif => "foo/bar.ldif") }.
75
+ should raise_error("Cannot read specified LDIF file foo/bar.ldif.")
76
+ end
77
+ end
78
+
79
+ describe ":verbose" do
80
+ it "defaults to false" do
81
+ Ladle::Server.new.verbose?.should be_false
82
+ end
83
+
84
+ it "can be overridden" do
85
+ Ladle::Server.new(:verbose => true).verbose?.should be_true
86
+ end
87
+ end
88
+
89
+ describe ":quiet" do
90
+ it "defaults to false" do
91
+ Ladle::Server.new.quiet?.should be_false
92
+ end
93
+
94
+ it "can be overridden" do
95
+ Ladle::Server.new(:quiet => true).quiet?.should be_true
96
+ end
97
+ end
98
+
99
+ describe ":timeout" do
100
+ it "defaults to 15 seconds" do
101
+ Ladle::Server.new.timeout.should == 15
102
+ end
103
+
104
+ it "can be overridden" do
105
+ Ladle::Server.new(:timeout => 27).timeout.should == 27
106
+ end
107
+ end
108
+
109
+ describe ":tmpdir" do
110
+ before do
111
+ preserve_and_wipe_env("TMPDIR", "TEMPDIR")
112
+ end
113
+
114
+ after do
115
+ restore_env
116
+ end
117
+
118
+ it "defaults to TMPDIR if set" do
119
+ ENV["TMPDIR"] = tmpdir('foo')
120
+ Ladle::Server.new.tmpdir.should == tmpdir('foo')
121
+ end
122
+
123
+ it "defaults to TEMPDIR if set" do
124
+ ENV["TEMPDIR"] = tmpdir('baz')
125
+ Ladle::Server.new.tmpdir.should == tmpdir('baz')
126
+ end
127
+
128
+ it "prefers the explicitly provided value" do
129
+ ENV["TMPDIR"] = tmpdir('quux')
130
+ ENV["TEMPDIR"] = tmpdir('bar')
131
+ Ladle::Server.new(:tmpdir => tmpdir('zap')).tmpdir.
132
+ should == tmpdir('zap')
133
+ end
134
+
135
+ it "must exist" do
136
+ lambda { Ladle::Server.new(:tmpdir => 'whatever') }.
137
+ should raise_error(/Tmpdir "whatever" does not exist./)
138
+ end
139
+
140
+ it "must be specified somehow" do
141
+ lambda { Ladle::Server.new }.
142
+ should raise_error(/Cannot guess tmpdir from the environment. Please specify it./)
143
+ end
144
+ end
145
+
146
+ describe ":java" do
147
+ before do
148
+ preserve_and_wipe_env("JAVA_HOME")
149
+ end
150
+
151
+ after do
152
+ restore_env
153
+ end
154
+
155
+ it "relies on the path with no JAVA_HOME" do
156
+ Ladle::Server.new.java_bin.should == "java"
157
+ end
158
+
159
+ it "defaults to JAVA_HOME/bin/java if available" do
160
+ ENV["JAVA_HOME"] = tmpdir('myjdk')
161
+ Ladle::Server.new.java_bin.should == "#{tmpdir}/myjdk/bin/java"
162
+ end
163
+
164
+ it "can be overridden" do
165
+ Ladle::Server.new(:java_bin => File.join(tmpdir('openjdk'), "jre")).java_bin.
166
+ should == "#{tmpdir}/openjdk/jre"
167
+ end
168
+ end
169
+ end
170
+
171
+ describe "running" do
172
+ def should_be_running
173
+ lambda { TCPSocket.new('localhost', @server.port) }.
174
+ should_not raise_error
175
+ end
176
+
177
+ it "blocks until the server is up" do
178
+ @server.start
179
+ should_be_running
180
+ end
181
+
182
+ it "returns the server object" do
183
+ @server.start.should be(@server)
184
+ end
185
+
186
+ it "is safe to invoke twice (in the same thread)" do
187
+ @server.start
188
+ lambda { @server.start }.should_not raise_error
189
+ end
190
+
191
+ it "can be stopped then started again" do
192
+ @server.start
193
+ @server.stop
194
+ @server.start
195
+ lambda { TCPSocket.new('localhost', @server.port) }.
196
+ should_not raise_error
197
+ end
198
+
199
+ it "throws an exception when the server doesn't start up" do
200
+ old_stderr, $stderr = $stderr, StringIO.new
201
+
202
+ @server = create_server(:more_args => ["--fail", "before_start"])
203
+ lambda { @server.start }.should raise_error(/LDAP server failed to start/)
204
+ $stderr.string.should == "ApacheDS process failed: FATAL: Expected failure for testing\n"
205
+
206
+ $stderr = old_stderr
207
+ end
208
+
209
+ it "times out after the specified interval" do
210
+ @server = create_server(:timeout => 3, :more_args => %w(--fail hang))
211
+ lambda { @server.start }.
212
+ should raise_error(/LDAP server startup did not complete within 3 seconds/)
213
+ end
214
+
215
+ it "should use the specified port" do
216
+ @server = create_server(:port => 45678).start
217
+ should_be_running
218
+ end
219
+
220
+ it "uses the specified tmpdir" do
221
+ target = tmpdir('baz')
222
+ @server = create_server(:tmpdir => target).start
223
+ Dir["#{target}/ladle-server-*"].size.should == 1
224
+ end
225
+
226
+ it "cleans up the tmpdir afterward" do
227
+ target = tmpdir('quux')
228
+ @server = create_server(:tmpdir => target).start
229
+ @server.stop
230
+ Dir["#{target}/ladle-server-*"].size.should == 0
231
+ end
232
+ end
233
+
234
+ describe "data" do
235
+ before do
236
+ pending "Net::LDAP doesn't work on 1.9" if RUBY_VERSION =~ /1.9/
237
+ end
238
+
239
+ def with_ldap
240
+ @server.start
241
+ Net::LDAP.open(ldap_parameters) do |ldap|
242
+ return yield ldap
243
+ end
244
+ end
245
+
246
+ def ldap_search(filter, base=nil)
247
+ with_ldap { |ldap|
248
+ ldap.search(
249
+ :base => base || 'dc=example,dc=org',
250
+ :filter => filter
251
+ )
252
+ }
253
+ end
254
+
255
+ def ldap_parameters
256
+ @ldap_parameters ||= {
257
+ :host => 'localhost', :port => @server.port,
258
+ :auth => { :method => :anonymous }
259
+ }
260
+ end
261
+
262
+ describe "the default set" do
263
+ it "has 26 people" do
264
+ ldap_search(Net::LDAP::Filter.pres('uid')).should have(26).people
265
+ end
266
+
267
+ it "has 1 group" do
268
+ ldap_search(Net::LDAP::Filter.pres('ou')).should have(1).group
269
+ end
270
+
271
+ it "has given names" do
272
+ ldap_search(Net::LDAP::Filter.pres('uid')).
273
+ select { |res| !res[:givenname] || res[:givenname].empty? }.should == []
274
+ end
275
+
276
+ it "has e-mail addresses" do
277
+ ldap_search(Net::LDAP::Filter.pres('uid')).
278
+ select { |res| !res[:mail] || res[:mail].empty? }.should == []
279
+ end
280
+
281
+ it "can be searched by value" do
282
+ ldap_search(Net::LDAP::Filter.eq(:givenname, 'Josephine')).
283
+ collect { |res| res[:uid].first }.should == %w(jj243)
284
+ end
285
+ end
286
+
287
+ describe "with a provided set" do
288
+ before do
289
+ @server = create_server(
290
+ :domain => "dc=example,dc=net",
291
+ :ldif => File.expand_path("../animals.ldif", __FILE__)
292
+ )
293
+ end
294
+
295
+ it "has the groups provided by the other LDIF" do
296
+ ldap_search(Net::LDAP::Filter.pres('ou'), 'dc=example,dc=net').
297
+ collect { |result| result[:ou].first }.should == ["animals"]
298
+ end
299
+
300
+ it "has the individuals provided by the other LDIF" do
301
+ ldap_search(Net::LDAP::Filter.pres('uid'), 'dc=example,dc=net').
302
+ collect { |result| result[:givenname].first }.sort.should == %w(Ada Bob)
303
+ end
304
+ end
305
+ end
306
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path("../../spec_helper.rb", __FILE__)
2
+
3
+ describe Ladle, "::VERSION" do
4
+ it "exists" do
5
+ lambda { Ladle::VERSION }.should_not raise_error
6
+ end
7
+
8
+ it "has 3 or 4 dot separated parts" do
9
+ Ladle::VERSION.split('.').size.should be_between(3, 4)
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ require 'bundler'
2
+ Bundler.setup
3
+
4
+ require 'rspec'
5
+
6
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
7
+
8
+ require 'ladle'
9
+
10
+ module Ladle::RSpec
11
+ module Tmpdir
12
+ def tmpdir(path=nil)
13
+ @tmpdir ||= File.expand_path("../../tmp/specs", __FILE__)
14
+ full = path ? File.join(@tmpdir, path) : @tmpdir
15
+ FileUtils.mkdir_p full
16
+ full
17
+ end
18
+
19
+ def rm_tmpdir
20
+ if @tmpdir
21
+ FileUtils.rm_rf @tmpdir
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ config.include(Ladle::RSpec::Tmpdir)
29
+ config.after do
30
+ rm_tmpdir
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ladle
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Rhett Sutphin
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-21 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: open4
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 0
34
+ version: 1.0.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 15
46
+ segments:
47
+ - 2
48
+ - 0
49
+ - 0
50
+ version: 2.0.0
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: yard
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 5
62
+ segments:
63
+ - 0
64
+ - 6
65
+ - 1
66
+ version: 0.6.1
67
+ type: :development
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdiscount
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ type: :development
82
+ version_requirements: *id004
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby-net-ldap
85
+ prerelease: false
86
+ requirement: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ hash: 23
92
+ segments:
93
+ - 0
94
+ - 0
95
+ - 4
96
+ version: 0.0.4
97
+ type: :development
98
+ version_requirements: *id005
99
+ description: Provides an embedded LDAP server for BDD. The embedded server is built with ApacheDS.
100
+ email:
101
+ - rhett@detailedbalance.net
102
+ executables: []
103
+
104
+ extensions: []
105
+
106
+ extra_rdoc_files: []
107
+
108
+ files:
109
+ - lib/ladle/apacheds/antlr-2.7.6.jar
110
+ - lib/ladle/apacheds/apacheds-core-1.0.2.jar
111
+ - lib/ladle/apacheds/apacheds-core-shared-1.0.2.jar
112
+ - lib/ladle/apacheds/apacheds-kerberos-shared-1.0.2.jar
113
+ - lib/ladle/apacheds/apacheds-protocol-changepw-1.0.2.jar
114
+ - lib/ladle/apacheds/apacheds-protocol-kerberos-1.0.2.jar
115
+ - lib/ladle/apacheds/apacheds-protocol-ldap-1.0.2.jar
116
+ - lib/ladle/apacheds/apacheds-protocol-ntp-1.0.2.jar
117
+ - lib/ladle/apacheds/apacheds-protocol-shared-1.0.2.jar
118
+ - lib/ladle/apacheds/apacheds-server-jndi-1.0.2.jar
119
+ - lib/ladle/apacheds/apacheds-server-main-1.0.2.jar
120
+ - lib/ladle/apacheds/apacheds-server-ssl-1.0.2.jar
121
+ - lib/ladle/apacheds/backport-util-concurrent-2.2.jar
122
+ - lib/ladle/apacheds/commons-cli-1.0.jar
123
+ - lib/ladle/apacheds/commons-collections-3.2.jar
124
+ - lib/ladle/apacheds/commons-io-1.4.jar
125
+ - lib/ladle/apacheds/commons-lang-2.1.jar
126
+ - lib/ladle/apacheds/jcl-over-slf4j-1.5.6.jar
127
+ - lib/ladle/apacheds/jdbm-1.0.jar
128
+ - lib/ladle/apacheds/log4j-1.2.14.jar
129
+ - lib/ladle/apacheds/mina-core-1.0.2.jar
130
+ - lib/ladle/apacheds/mina-filter-ssl-1.0.2.jar
131
+ - lib/ladle/apacheds/shared-asn1-0.9.5.5.jar
132
+ - lib/ladle/apacheds/shared-asn1-codec-0.9.5.5.jar
133
+ - lib/ladle/apacheds/shared-ldap-0.9.5.5.jar
134
+ - lib/ladle/apacheds/slf4j-api-1.5.6.jar
135
+ - lib/ladle/apacheds/slf4j-log4j12-1.5.6.jar
136
+ - lib/ladle/apacheds/spring-beans-1.2.8.jar
137
+ - lib/ladle/apacheds/spring-context-1.2.8.jar
138
+ - lib/ladle/apacheds/spring-core-1.2.8.jar
139
+ - lib/ladle/apacheds/xercesImpl-2.0.2.jar
140
+ - lib/ladle/default.ldif
141
+ - lib/ladle/java/net/detailedbalance/ladle/LadleFatalException.class
142
+ - lib/ladle/java/net/detailedbalance/ladle/LadleFatalException.java
143
+ - lib/ladle/java/net/detailedbalance/ladle/Main$1.class
144
+ - lib/ladle/java/net/detailedbalance/ladle/Main.class
145
+ - lib/ladle/java/net/detailedbalance/ladle/Main.java
146
+ - lib/ladle/java/net/detailedbalance/ladle/Server.class
147
+ - lib/ladle/java/net/detailedbalance/ladle/Server.java
148
+ - lib/ladle/jruby_process.rb
149
+ - lib/ladle/Ladle.iml
150
+ - lib/ladle/ruby_process.rb
151
+ - lib/ladle/server.rb
152
+ - lib/ladle/version.rb
153
+ - lib/ladle.rb
154
+ - spec/ladle/animals.ldif
155
+ - spec/ladle/server_spec.rb
156
+ - spec/ladle/version_spec.rb
157
+ - spec/spec_helper.rb
158
+ - CHANGELOG.md
159
+ - README.md
160
+ - ASL20-LICENSE
161
+ - LICENSE
162
+ - NOTICE
163
+ has_rdoc: true
164
+ homepage: http://github.com/rsutphin/ladle
165
+ licenses: []
166
+
167
+ post_install_message:
168
+ rdoc_options: []
169
+
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ hash: 3
187
+ segments:
188
+ - 0
189
+ version: "0"
190
+ requirements: []
191
+
192
+ rubyforge_project:
193
+ rubygems_version: 1.3.7
194
+ signing_key:
195
+ specification_version: 3
196
+ summary: Dishes out steaming helpings of LDAP for fluid testing
197
+ test_files:
198
+ - spec/ladle/animals.ldif
199
+ - spec/ladle/server_spec.rb
200
+ - spec/ladle/version_spec.rb
201
+ - spec/spec_helper.rb