activeldap 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +17 -0
- data/README +7 -1
- data/Rakefile +2 -1
- data/benchmark/bench-al.rb +3 -3
- data/examples/al-admin/app/helpers/users_helper.rb +1 -1
- data/examples/al-admin/config/environment.rb +4 -3
- data/examples/al-admin/config/initializers/gettext.rb +1 -0
- data/examples/al-admin/config/session_secret.txt +1 -1
- data/examples/al-admin/po/al-admin.pot +344 -0
- data/examples/al-admin/public/images/active-ldap.png +0 -0
- data/examples/al-admin/vendor/locale_rails/.gitignore +6 -0
- data/examples/al-admin/vendor/locale_rails/COPYING +56 -0
- data/examples/al-admin/vendor/locale_rails/ChangeLog +35 -0
- data/examples/al-admin/vendor/locale_rails/README.rdoc +62 -0
- data/examples/al-admin/vendor/locale_rails/Rakefile +73 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails.rb +18 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/action_controller.rb +15 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/action_controller/base.rb +82 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/action_controller/caching.rb +51 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/action_controller/test_process.rb +44 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/action_view.rb +53 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/i18n.rb +67 -0
- data/examples/al-admin/vendor/locale_rails/lib/locale_rails/version.rb +4 -0
- data/examples/al-admin/vendor/locale_rails/sample/README +22 -0
- data/examples/al-admin/vendor/locale_rails/sample/Rakefile +10 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/controllers/application.rb +42 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/controllers/samples_controller.rb +30 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/helpers/application_helper.rb +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/layouts/samples.html.erb +20 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/samples/_part.html.erb +68 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/samples/_part_nl.html.erb +2 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/samples/cached_action.html.erb +6 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/samples/index.html.erb +33 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/samples/index.pt.html.erb +16 -0
- data/examples/al-admin/vendor/locale_rails/sample/app/views/samples/index_uz_UZ.html.erb +16 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/boot.rb +109 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/environment.rb +25 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/environments/development.rb +17 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/environments/production.rb +24 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/environments/test.rb +22 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/initializers/inflections.rb +10 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/initializers/mime_types.rb +5 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/initializers/new_rails_defaults.rb +17 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/locales/en.yml +2 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/locales/ja.yml +2 -0
- data/examples/al-admin/vendor/locale_rails/sample/config/routes.rb +13 -0
- data/examples/al-admin/vendor/locale_rails/sample/db/schema.rb +10 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/404.html +30 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/422.html +30 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/500.html +33 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/dispatch.cgi +10 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/dispatch.fcgi +24 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/dispatch.rb +10 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/favicon.ico +0 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/images/rails.png +0 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/javascripts/application.js +2 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/javascripts/controls.js +963 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/javascripts/dragdrop.js +972 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/javascripts/effects.js +1120 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/javascripts/prototype.js +4221 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/robots.txt +5 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/stylesheets/locale.css +81 -0
- data/examples/al-admin/vendor/locale_rails/sample/public/stylesheets/scaffold.css +74 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/about +4 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/console +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/dbconsole +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/destroy +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/generate +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/performance/benchmarker +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/performance/profiler +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/performance/request +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/plugin +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/process/inspector +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/process/reaper +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/process/spawner +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/runner +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/script/server +3 -0
- data/examples/al-admin/vendor/locale_rails/sample/test/performance/browsing_test.rb +9 -0
- data/examples/al-admin/vendor/locale_rails/sample/test/test_helper.rb +38 -0
- data/examples/al-admin/vendor/locale_rails/test/README +243 -0
- data/examples/al-admin/vendor/locale_rails/test/Rakefile +10 -0
- data/examples/al-admin/vendor/locale_rails/test/app/controllers/application_controller.rb +10 -0
- data/examples/al-admin/vendor/locale_rails/test/app/controllers/articles_controller.rb +17 -0
- data/examples/al-admin/vendor/locale_rails/test/app/helpers/application_helper.rb +3 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/index.html.erb +1 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/index_de.html.erb +1 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/index_fr_FR.html.erb +1 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/index_ja.html.erb +1 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/list.html.erb +1 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/show.html.erb +0 -0
- data/examples/al-admin/vendor/locale_rails/test/app/views/articles/show.js.rjs +0 -0
- data/examples/al-admin/vendor/locale_rails/test/config/boot.rb +110 -0
- data/examples/al-admin/vendor/locale_rails/test/config/environment.rb +42 -0
- data/examples/al-admin/vendor/locale_rails/test/config/environments/development.rb +17 -0
- data/examples/al-admin/vendor/locale_rails/test/config/environments/production.rb +28 -0
- data/examples/al-admin/vendor/locale_rails/test/config/environments/test.rb +35 -0
- data/examples/al-admin/vendor/locale_rails/test/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/al-admin/vendor/locale_rails/test/config/initializers/inflections.rb +10 -0
- data/examples/al-admin/vendor/locale_rails/test/config/initializers/mime_types.rb +5 -0
- data/examples/al-admin/vendor/locale_rails/test/config/initializers/new_rails_defaults.rb +19 -0
- data/examples/al-admin/vendor/locale_rails/test/config/initializers/session_store.rb +15 -0
- data/examples/al-admin/vendor/locale_rails/test/config/locales/en.yml +5 -0
- data/examples/al-admin/vendor/locale_rails/test/config/routes.rb +46 -0
- data/examples/al-admin/vendor/locale_rails/test/db/schema.rb +0 -0
- data/examples/al-admin/vendor/locale_rails/test/public/404.html +30 -0
- data/examples/al-admin/vendor/locale_rails/test/public/422.html +30 -0
- data/examples/al-admin/vendor/locale_rails/test/public/500.html +30 -0
- data/examples/al-admin/vendor/locale_rails/test/public/favicon.ico +0 -0
- data/examples/al-admin/vendor/locale_rails/test/public/images/rails.png +0 -0
- data/examples/al-admin/vendor/locale_rails/test/public/index.html +275 -0
- data/examples/al-admin/vendor/locale_rails/test/public/javascripts/application.js +2 -0
- data/examples/al-admin/vendor/locale_rails/test/public/javascripts/controls.js +963 -0
- data/examples/al-admin/vendor/locale_rails/test/public/javascripts/dragdrop.js +973 -0
- data/examples/al-admin/vendor/locale_rails/test/public/javascripts/effects.js +1128 -0
- data/examples/al-admin/vendor/locale_rails/test/public/javascripts/prototype.js +4320 -0
- data/examples/al-admin/vendor/locale_rails/test/public/robots.txt +5 -0
- data/examples/al-admin/vendor/locale_rails/test/script/about +4 -0
- data/examples/al-admin/vendor/locale_rails/test/script/console +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/dbconsole +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/destroy +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/generate +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/performance/benchmarker +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/performance/profiler +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/plugin +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/runner +3 -0
- data/examples/al-admin/vendor/locale_rails/test/script/server +3 -0
- data/examples/al-admin/vendor/locale_rails/test/test/functional/articles_controller_test.rb +161 -0
- data/examples/al-admin/vendor/locale_rails/test/test/performance/browsing_test.rb +9 -0
- data/examples/al-admin/vendor/locale_rails/test/test/test_helper.rb +38 -0
- data/lib/active_ldap.rb +9 -4
- data/lib/active_ldap/adapter/base.rb +3 -3
- data/lib/active_ldap/adapter/jndi.rb +1 -1
- data/lib/active_ldap/adapter/jndi_connection.rb +1 -3
- data/lib/active_ldap/adapter/ldap.rb +11 -11
- data/lib/active_ldap/adapter/ldap_ext.rb +25 -3
- data/lib/active_ldap/adapter/net_ldap.rb +9 -2
- data/lib/active_ldap/association/collection.rb +14 -2
- data/lib/active_ldap/base.rb +13 -5
- data/lib/active_ldap/configuration.rb +1 -0
- data/lib/active_ldap/ldap_error.rb +3 -3
- data/lib/active_ldap/ldif.rb +1 -1
- data/lib/active_ldap/operations.rb +2 -0
- data/lib/active_ldap/schema/syntaxes.rb +2 -2
- data/lib/active_ldap/validations.rb +37 -26
- data/lib/active_ldap/xml.rb +2 -0
- data/po/active-ldap.pot +38 -58
- data/test-unit/COPYING +56 -0
- data/test-unit/GPL +340 -0
- data/test-unit/History.txt +65 -3
- data/test-unit/Manifest.txt +5 -0
- data/test-unit/PSFL +271 -0
- data/test-unit/README.txt +6 -1
- data/test-unit/lib/test/unit.rb +6 -1
- data/test-unit/lib/test/unit/assertions.rb +129 -13
- data/test-unit/lib/test/unit/autorunner.rb +21 -16
- data/test-unit/lib/test/unit/collector.rb +1 -8
- data/test-unit/lib/test/unit/collector/dir.rb +1 -1
- data/test-unit/lib/test/unit/collector/load.rb +15 -7
- data/test-unit/lib/test/unit/color-scheme.rb +6 -2
- data/test-unit/lib/test/unit/diff.rb +17 -1
- data/test-unit/lib/test/unit/error.rb +4 -0
- data/test-unit/lib/test/unit/failure.rb +4 -0
- data/test-unit/lib/test/unit/notification.rb +8 -4
- data/test-unit/lib/test/unit/omission.rb +4 -0
- data/test-unit/lib/test/unit/pending.rb +4 -0
- data/test-unit/lib/test/unit/priority.rb +2 -3
- data/test-unit/lib/test/unit/testcase.rb +18 -7
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +5 -3
- data/test-unit/lib/test/unit/util/backtracefilter.rb +1 -0
- data/test-unit/lib/test/unit/util/output.rb +31 -0
- data/test-unit/lib/test/unit/version.rb +1 -1
- data/test-unit/test/collector/test-descendant.rb +2 -4
- data/test-unit/test/collector/test-load.rb +121 -8
- data/test-unit/test/collector/test_objectspace.rb +7 -5
- data/test-unit/test/test-color-scheme.rb +4 -2
- data/test-unit/test/test-testcase.rb +48 -38
- data/test-unit/test/test_assertions.rb +87 -5
- data/test-unit/test/util/test-output.rb +11 -0
- data/test/al-test-utils.rb +6 -1
- data/test/fixtures/lower_case_object_class_schema.rb +802 -0
- data/test/test_associations.rb +20 -1
- data/test/test_base.rb +50 -3
- data/test/test_ldif.rb +10 -1
- data/test/test_syntax.rb +12 -0
- data/test/test_validation.rb +0 -2
- metadata +225 -56
@@ -0,0 +1,161 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
class ArticlesControllerTest < ActionController::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr-FR;ja;q=0.7,de;q=0.3"
|
8
|
+
Locale.clear
|
9
|
+
end
|
10
|
+
|
11
|
+
test "localized template with accept_language" do
|
12
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en-US"
|
13
|
+
get :index
|
14
|
+
assert_equal "index.html.erb", @response.body.chop
|
15
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "ja-jp"
|
16
|
+
get :index, :lang => "ja"
|
17
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
18
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr-FR"
|
19
|
+
get :index
|
20
|
+
assert_equal "index_fr_FR.html.erb", @response.body.chop
|
21
|
+
|
22
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr"
|
23
|
+
get :index
|
24
|
+
assert_equal "index.html.erb", @response.body.chop
|
25
|
+
end
|
26
|
+
|
27
|
+
test "localized template with accept_languages" do
|
28
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en,ja;q=0.7,de;q=0.3"
|
29
|
+
get :index
|
30
|
+
assert_equal "index.html.erb", @response.body.chop
|
31
|
+
|
32
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr-FR,ja;q=0.7,de;q=0.3"
|
33
|
+
get :index
|
34
|
+
assert_equal "index_fr_FR.html.erb", @response.body.chop
|
35
|
+
|
36
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "ja;q=0.7,de;q=0.3"
|
37
|
+
get :index
|
38
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
39
|
+
end
|
40
|
+
|
41
|
+
test "localized template with query string" do
|
42
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en,ja;q=0.7,de;q=0.3"
|
43
|
+
get :index, :lang => "ja"
|
44
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
45
|
+
|
46
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr-FR,ja;q=0.7,de;q=0.3"
|
47
|
+
get :index, :lang => "ja"
|
48
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
49
|
+
|
50
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "ja;q=0.7,de;q=0.3"
|
51
|
+
get :index, :lang => "en"
|
52
|
+
assert_equal "index.html.erb", @response.body.chop
|
53
|
+
end
|
54
|
+
|
55
|
+
test "localized template with accept_languages and default is de" do
|
56
|
+
# index_de.html.erb is existed.
|
57
|
+
Locale.default = "de"
|
58
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en,ja;q=0.7,de;q=0.3"
|
59
|
+
get :index
|
60
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
61
|
+
|
62
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr-FR,ja;q=0.7,de;q=0.3"
|
63
|
+
get :index
|
64
|
+
assert_equal "index_fr_FR.html.erb", @response.body.chop
|
65
|
+
|
66
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "ja;q=0.7,de;q=0.3"
|
67
|
+
get :index
|
68
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
69
|
+
|
70
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "de;q=0.7,en;q=0.3"
|
71
|
+
get :index
|
72
|
+
assert_equal "index_de.html.erb", @response.body.chop
|
73
|
+
|
74
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "zh"
|
75
|
+
get :index
|
76
|
+
assert_equal "index_de.html.erb", @response.body.chop
|
77
|
+
end
|
78
|
+
|
79
|
+
test "localized template with accept_languages and default is zh" do
|
80
|
+
# index_zh.html.erb is not existed.
|
81
|
+
Locale.default = "zh"
|
82
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en,ja;q=0.7,de;q=0.3"
|
83
|
+
get :index
|
84
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
85
|
+
|
86
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "fr-FR,ja;q=0.7,de;q=0.3"
|
87
|
+
get :index
|
88
|
+
assert_equal "index_fr_FR.html.erb", @response.body.chop
|
89
|
+
|
90
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "ja;q=0.7,de;q=0.3"
|
91
|
+
get :index
|
92
|
+
assert_equal "index_ja.html.erb", @response.body.chop
|
93
|
+
|
94
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en;q=0.7;nl;q=0.3"
|
95
|
+
get :index
|
96
|
+
assert_equal "index.html.erb", @response.body.chop
|
97
|
+
|
98
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "zh"
|
99
|
+
get :index
|
100
|
+
assert_equal "index.html.erb", @response.body.chop
|
101
|
+
end
|
102
|
+
|
103
|
+
test "list.html.erb should be cached" do
|
104
|
+
cache_path = RAILS_ROOT + "/tmp/cache/views"
|
105
|
+
FileUtils.rm_rf cache_path
|
106
|
+
@request.env["HTTP_ACCEPT_LANGUAGE"] = "en,ja;q=0.7,de;q=0.3"
|
107
|
+
get :list
|
108
|
+
assert_equal "list:en", @response.body.chop
|
109
|
+
|
110
|
+
path = Dir.glob(cache_path + "/**/list_en.cache")[0]
|
111
|
+
st = File.stat(path)
|
112
|
+
last_modified_en = [st.ctime.to_s, st.mtime.to_s]
|
113
|
+
|
114
|
+
get :list, :lang => "ja"
|
115
|
+
assert_equal "list:ja", @response.body.chop
|
116
|
+
|
117
|
+
path = Dir.glob(cache_path + "/**/list_ja.cache")[0]
|
118
|
+
st = File.stat(path)
|
119
|
+
last_modified_ja = [st.ctime.to_s, st.mtime.to_s]
|
120
|
+
|
121
|
+
get :list
|
122
|
+
st = File.stat(path)
|
123
|
+
|
124
|
+
assert_equal last_modified_en, [st.ctime.to_s, st.mtime.to_s]
|
125
|
+
assert_equal "list:en", @response.body.chop
|
126
|
+
|
127
|
+
get :list, :lang => "ja"
|
128
|
+
st = File.stat(path)
|
129
|
+
assert_equal last_modified_ja, [st.ctime.to_s, st.mtime.to_s]
|
130
|
+
assert_equal "list:ja", @response.body.chop
|
131
|
+
|
132
|
+
# expire test
|
133
|
+
assert_equal 2, Dir.glob(cache_path + "/**/*.cache").size
|
134
|
+
get :expire_cache, :lang => "ja"
|
135
|
+
assert_equal [], Dir.glob(cache_path + "/**/*.cache")
|
136
|
+
end
|
137
|
+
|
138
|
+
test "is robust against malformed parameters" do
|
139
|
+
# default to "de" when parsing does not work
|
140
|
+
Locale.default = "de"
|
141
|
+
|
142
|
+
assert_nothing_raised do
|
143
|
+
Locale.default = "de"
|
144
|
+
get :index, :lang => ["en"]
|
145
|
+
assert_equal "index_de.html.erb", @response.body.chop
|
146
|
+
|
147
|
+
get :index, :lang => []
|
148
|
+
assert_equal "index_de.html.erb", @response.body.chop
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
test "find template with specific format" do
|
153
|
+
xhr :get, :show
|
154
|
+
assert_template 'show.html'
|
155
|
+
end
|
156
|
+
|
157
|
+
teardown do
|
158
|
+
Locale.default = nil
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
3
|
+
require 'test_help'
|
4
|
+
|
5
|
+
class ActiveSupport::TestCase
|
6
|
+
# Transactional fixtures accelerate your tests by wrapping each test method
|
7
|
+
# in a transaction that's rolled back on completion. This ensures that the
|
8
|
+
# test database remains unchanged so your fixtures don't have to be reloaded
|
9
|
+
# between every test method. Fewer database queries means faster tests.
|
10
|
+
#
|
11
|
+
# Read Mike Clark's excellent walkthrough at
|
12
|
+
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
|
13
|
+
#
|
14
|
+
# Every Active Record database supports transactions except MyISAM tables
|
15
|
+
# in MySQL. Turn off transactional fixtures in this case; however, if you
|
16
|
+
# don't care one way or the other, switching from MyISAM to InnoDB tables
|
17
|
+
# is recommended.
|
18
|
+
#
|
19
|
+
# The only drawback to using transactional fixtures is when you actually
|
20
|
+
# need to test transactions. Since your test is bracketed by a transaction,
|
21
|
+
# any transactions started in your code will be automatically rolled back.
|
22
|
+
self.use_transactional_fixtures = true
|
23
|
+
|
24
|
+
# Instantiated fixtures are slow, but give you @david where otherwise you
|
25
|
+
# would need people(:david). If you don't want to migrate your existing
|
26
|
+
# test cases which use the @david style and don't mind the speed hit (each
|
27
|
+
# instantiated fixtures translates to a database query per test method),
|
28
|
+
# then set this back to true.
|
29
|
+
self.use_instantiated_fixtures = false
|
30
|
+
|
31
|
+
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
32
|
+
#
|
33
|
+
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
34
|
+
# -- they do not yet inherit this setting
|
35
|
+
fixtures :all
|
36
|
+
|
37
|
+
# Add more helper methods to be used by all tests here...
|
38
|
+
end
|
data/lib/active_ldap.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# = ActiveLdap
|
3
3
|
#
|
4
4
|
# Copyright (C) 2004,2005 Will Drewry mailto:will@alum.bu.edu
|
5
|
-
# Copyright (C) 2006-
|
5
|
+
# Copyright (C) 2006-2010 Kouhei Sutou <kou@clear-code.com>
|
6
6
|
#
|
7
7
|
# == Introduction
|
8
8
|
#
|
@@ -432,6 +432,7 @@
|
|
432
432
|
# bind methods fail
|
433
433
|
# * :try_sasl, when true, tells ActiveLdap to attempt a SASL-GSSAPI bind
|
434
434
|
# * :sasl_quiet, when true, tells the SASL libraries to not spew messages to STDOUT
|
435
|
+
# * :sasl_options, if defined, should be a hash of options to pass through. This currently only works with the ruby-ldap adapter, which currently only supports :realm, :authcid, and :authzid.
|
435
436
|
# * :retry_limit - indicates the number of attempts to reconnect that will be undertaken when a stale connection occurs. -1 means infinite.
|
436
437
|
# * :retry_wait - seconds to wait before retrying a connection
|
437
438
|
# * :scope - dictates how to find objects. (Default: :one)
|
@@ -887,6 +888,10 @@
|
|
887
888
|
# package, and I'd like to see it prove helpful to more people than just myself.
|
888
889
|
#
|
889
890
|
|
891
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "..", "net-ldap", "lib"))
|
892
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "..", "ldap", "lib"))
|
893
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "..", "ldap"))
|
894
|
+
|
890
895
|
require_gem_if_need = Proc.new do |library_name, gem_name, *gem_args|
|
891
896
|
gem_name ||= library_name
|
892
897
|
begin
|
@@ -901,7 +906,7 @@ require_gem_if_need = Proc.new do |library_name, gem_name, *gem_args|
|
|
901
906
|
end
|
902
907
|
end
|
903
908
|
|
904
|
-
require_gem_if_need.call("active_support", "activesupport", "= 2.3.
|
909
|
+
require_gem_if_need.call("active_support", "activesupport", "= 2.3.8")
|
905
910
|
|
906
911
|
if ActiveSupport.const_defined?(:Dependencies)
|
907
912
|
dependencies = ActiveSupport::Dependencies
|
@@ -914,7 +919,7 @@ if dependencies.respond_to?(:load_paths)
|
|
914
919
|
end
|
915
920
|
|
916
921
|
module ActiveLdap
|
917
|
-
VERSION = "1.2.
|
922
|
+
VERSION = "1.2.2"
|
918
923
|
end
|
919
924
|
|
920
925
|
if RUBY_PLATFORM.match('linux')
|
@@ -923,7 +928,7 @@ else
|
|
923
928
|
require 'active_ldap/timeout_stub'
|
924
929
|
end
|
925
930
|
|
926
|
-
require_gem_if_need.call("active_record", "activerecord", "= 2.3.
|
931
|
+
require_gem_if_need.call("active_record", "activerecord", "= 2.3.8")
|
927
932
|
begin
|
928
933
|
require_gem_if_need.call("locale", nil, "= 2.0.5")
|
929
934
|
require_gem_if_need.call("gettext", nil, "= 2.1.0")
|
@@ -15,7 +15,7 @@ module ActiveLdap
|
|
15
15
|
:password_block, :try_sasl,
|
16
16
|
:sasl_mechanisms, :sasl_quiet,
|
17
17
|
:allow_anonymous, :store_password,
|
18
|
-
:scope]
|
18
|
+
:scope, :sasl_options]
|
19
19
|
|
20
20
|
@@row_even = true
|
21
21
|
|
@@ -169,7 +169,7 @@ module ActiveLdap
|
|
169
169
|
operation(options) do
|
170
170
|
yield(base, scope, filter, attrs, limit, callback)
|
171
171
|
end
|
172
|
-
rescue LdapError
|
172
|
+
rescue LdapError::NoSuchObject, LdapError::InvalidDnSyntax
|
173
173
|
# Do nothing on failure
|
174
174
|
@logger.info do
|
175
175
|
args = [$!.class, $!.message, filter, attrs.inspect]
|
@@ -274,7 +274,7 @@ module ActiveLdap
|
|
274
274
|
with_timeout(try_reconnect, options) do
|
275
275
|
yield
|
276
276
|
end
|
277
|
-
rescue
|
277
|
+
rescue ConnectionError
|
278
278
|
if try_reconnect and !retried
|
279
279
|
retried = true
|
280
280
|
@disconnected = true
|
@@ -45,7 +45,7 @@ module ActiveLdap
|
|
45
45
|
super(options) do |base, scope, filter, attrs, limit, callback|
|
46
46
|
info = {
|
47
47
|
:base => base, :scope => scope_name(scope), :filter => filter,
|
48
|
-
:attributes => attrs,
|
48
|
+
:attributes => attrs, :limit => limit,
|
49
49
|
}
|
50
50
|
execute(:search, info,
|
51
51
|
base, scope, filter, attrs, limit, callback, &block)
|
@@ -109,13 +109,12 @@ module ActiveLdap
|
|
109
109
|
controls = SearchControls.new
|
110
110
|
controls.search_scope = scope
|
111
111
|
|
112
|
+
controls.count_limit = limit if limit
|
112
113
|
unless attrs.blank?
|
113
114
|
controls.returning_attributes = attrs.to_java(:string)
|
114
115
|
end
|
115
116
|
|
116
|
-
i = 0
|
117
117
|
@context.search(base, filter, controls).each do |result|
|
118
|
-
i += 1
|
119
118
|
attributes = {}
|
120
119
|
result.attributes.get_all.each do |attribute|
|
121
120
|
attributes[attribute.get_id] = attribute.get_all.collect do |value|
|
@@ -123,7 +122,6 @@ module ActiveLdap
|
|
123
122
|
end
|
124
123
|
end
|
125
124
|
callback.call([result.name_in_namespace, attributes], block)
|
126
|
-
break if limit and limit <= i
|
127
125
|
end
|
128
126
|
end
|
129
127
|
|
@@ -82,26 +82,19 @@ module ActiveLdap
|
|
82
82
|
def search(options={}, &block)
|
83
83
|
super(options) do |base, scope, filter, attrs, limit, callback|
|
84
84
|
begin
|
85
|
-
i = 0
|
86
85
|
info = {
|
87
86
|
:base => base, :scope => scope_name(scope),
|
88
|
-
:filter => filter, :attributes => attrs,
|
87
|
+
:filter => filter, :attributes => attrs, :limit => limit,
|
89
88
|
}
|
90
|
-
execute(:
|
91
|
-
|
89
|
+
execute(:search_with_limit,
|
90
|
+
info, base, scope, filter, attrs, limit) do |entry|
|
92
91
|
attributes = {}
|
93
92
|
entry.attrs.each do |attr|
|
94
93
|
attributes[attr] = entry.vals(attr)
|
95
94
|
end
|
96
95
|
callback.call([entry.dn, attributes], block)
|
97
|
-
break if limit and limit <= i
|
98
96
|
end
|
99
97
|
rescue RuntimeError
|
100
|
-
begin
|
101
|
-
@connection.assert_error_code
|
102
|
-
rescue LDAP::ServerDown
|
103
|
-
raise ConnectionError, $!.message
|
104
|
-
end
|
105
98
|
if $!.message == "no result returned by search"
|
106
99
|
@logger.debug do
|
107
100
|
args = [filter, attrs.inspect]
|
@@ -234,8 +227,15 @@ module ActiveLdap
|
|
234
227
|
sasl_quiet = @connection.sasl_quiet
|
235
228
|
@connection.sasl_quiet = quiet unless quiet.nil?
|
236
229
|
args = [_bind_dn, mechanism]
|
230
|
+
credential = nil
|
237
231
|
if need_credential_sasl_mechanism?(mechanism)
|
238
|
-
|
232
|
+
credential = password(_bind_dn, options)
|
233
|
+
end
|
234
|
+
if @sasl_options
|
235
|
+
credential ||= ""
|
236
|
+
args.concat([credential, nil, nil, @sasl_options])
|
237
|
+
else
|
238
|
+
args << credential if credential
|
239
239
|
end
|
240
240
|
info = {
|
241
241
|
:name => "bind: SASL", :dn => _bind_dn, :mechanism => mechanism
|
@@ -50,6 +50,27 @@ module LDAP
|
|
50
50
|
end
|
51
51
|
|
52
52
|
class Conn
|
53
|
+
begin
|
54
|
+
instance_method(:search_ext)
|
55
|
+
@@have_search_ext = true
|
56
|
+
rescue NameError
|
57
|
+
@@have_search_ext = false
|
58
|
+
end
|
59
|
+
|
60
|
+
def search_with_limit(base, scope, filter, attributes, limit, &block)
|
61
|
+
if @@have_search_ext
|
62
|
+
search_ext(base, scope, filter, attributes,
|
63
|
+
false, nil, nil, 0, 0, limit || 0, &block)
|
64
|
+
else
|
65
|
+
i = 0
|
66
|
+
search(base, scope, filter, attributes) do |entry|
|
67
|
+
i += 1
|
68
|
+
block.call(entry)
|
69
|
+
break if limit and limit <= i
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
53
74
|
def failed?
|
54
75
|
not error_code.zero?
|
55
76
|
end
|
@@ -71,13 +92,14 @@ module LDAP
|
|
71
92
|
def assert_error_code
|
72
93
|
return unless failed?
|
73
94
|
code = error_code
|
95
|
+
message = error_message
|
74
96
|
klass = ActiveLdap::LdapError::ERRORS[code]
|
75
97
|
klass ||= IMPLEMENT_SPECIFIC_ERRORS[code]
|
76
|
-
if klass.nil? and
|
77
|
-
klass =
|
98
|
+
if klass.nil? and message == "Can't contact LDAP server"
|
99
|
+
klass = ActiveLdap::ConnectionError
|
78
100
|
end
|
79
101
|
klass ||= ActiveLdap::LdapError
|
80
|
-
raise klass,
|
102
|
+
raise klass, message
|
81
103
|
end
|
82
104
|
end
|
83
105
|
end
|