adauth 1.2.1 → 2.0.0pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/.travis.yml +12 -0
  2. data/Gemfile.lock +13 -26
  3. data/Rakefile +1 -0
  4. data/Readme.md +48 -0
  5. data/adauth.gemspec +2 -1
  6. data/lib/adauth.rb +40 -28
  7. data/lib/adauth/ad_object.rb +104 -0
  8. data/lib/adauth/ad_objects/computer.rb +28 -0
  9. data/lib/adauth/ad_objects/group.rb +40 -0
  10. data/lib/adauth/ad_objects/ou.rb +41 -0
  11. data/lib/adauth/ad_objects/user.rb +45 -0
  12. data/lib/adauth/authenticate.rb +25 -46
  13. data/lib/adauth/config.rb +11 -28
  14. data/lib/adauth/connection.rb +19 -18
  15. data/lib/adauth/rails.rb +9 -0
  16. data/lib/adauth/rails/helpers.rb +29 -0
  17. data/lib/adauth/rails/model_bridge.rb +59 -0
  18. data/lib/adauth/version.rb +2 -3
  19. data/lib/generators/adauth/config/config_generator.rb +1 -1
  20. data/lib/generators/adauth/config/templates/config.rb.erb +18 -22
  21. data/lib/generators/adauth/sessions/sessions_generator.rb +2 -3
  22. data/lib/generators/adauth/sessions/templates/sessions_controller.rb.erb +1 -1
  23. data/spec/adauth_ad_object_computer_spec.rb +15 -0
  24. data/spec/adauth_ad_object_group_spec.rb +21 -0
  25. data/spec/adauth_ad_object_ou_spec.rb +18 -0
  26. data/spec/adauth_ad_object_user_spec.rb +27 -0
  27. data/spec/adauth_authenticate_spec.rb +39 -0
  28. data/spec/adauth_config_spec.rb +15 -0
  29. data/spec/adauth_rails_model_bridge_spec.rb +37 -0
  30. data/spec/adauth_spec.rb +2 -30
  31. data/spec/spec_helper.rb +34 -0
  32. metadata +52 -38
  33. data/Readme.rdoc +0 -66
  34. data/lib/adauth/admin_connection.rb +0 -26
  35. data/lib/adauth/group.rb +0 -100
  36. data/lib/adauth/helpers.rb +0 -28
  37. data/lib/adauth/user.rb +0 -114
  38. data/lib/adauth/user_model.rb +0 -76
  39. data/lib/generators/adauth/all/USAGE +0 -5
  40. data/lib/generators/adauth/all/all_generator.rb +0 -18
  41. data/lib/generators/adauth/user_model/USAGE +0 -14
  42. data/lib/generators/adauth/user_model/templates/model.rb.erb +0 -3
  43. data/lib/generators/adauth/user_model/user_model_generator.rb +0 -32
  44. data/spec/adauth_group_spec.rb +0 -51
  45. data/spec/adauth_user_model_spec.rb +0 -80
  46. data/spec/adauth_user_spec.rb +0 -213
@@ -1,80 +0,0 @@
1
- require 'lib/adauth'
2
- require 'yaml'
3
-
4
- ReturnDataForTest = []
5
-
6
- class TestModel
7
- include Adauth::UserModel
8
-
9
- attr_accessor :login, :group_strings, :name, :ou_strings
10
-
11
- def self.create!
12
- @user = self.new
13
- yield(@user)
14
- return @user
15
- end
16
-
17
- def self.find_by_login(login)
18
- ReturnDataForTest.last
19
- end
20
-
21
- def save
22
- true
23
- end
24
- end
25
-
26
- describe TestModel, "creations" do
27
- before :each do
28
- @yaml = YAML::load(File.open('spec/test_data.yml'))
29
- Adauth.configure do |c|
30
- c.domain = @yaml["domain"]["domain"]
31
- c.server = @yaml["domain"]["server"]
32
- c.port = @yaml["domain"]["port"]
33
- c.base = @yaml["domain"]["base"]
34
- end
35
- @user = Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"])
36
- end
37
-
38
- it "should create a new user for method `create_user_with_adauth`" do
39
- TestModel.create_user_with_adauth(@user).should be_a TestModel
40
- end
41
-
42
- it "should return a user for method `return_and_create_with_adauth`, if no user exists in the db" do
43
- ReturnDataForTest.push nil
44
- TestModel.return_and_create_with_adauth(@user).should be_a TestModel
45
- end
46
-
47
- it "should return a user for method `return_and_create_with_adauth`, if the user does exist" do
48
- ReturnDataForTest.push TestModel.create_user_with_adauth(@user)
49
- TestModel.return_and_create_with_adauth(@user).should be_a TestModel
50
- end
51
- end
52
-
53
- describe TestModel, "methods" do
54
- before :each do
55
- @yaml = YAML::load(File.open('spec/test_data.yml'))
56
- Adauth.configure do |c|
57
- c.domain = @yaml["domain"]["domain"]
58
- c.server = @yaml["domain"]["server"]
59
- c.port = @yaml["domain"]["port"]
60
- c.base = @yaml["domain"]["base"]
61
- end
62
- @user = Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"])
63
- @model = TestModel.create_user_with_adauth(@user)
64
- end
65
-
66
- it "should return an array of groups for .groups" do
67
- @model.groups.should be_a Array
68
- end
69
-
70
- it "should return an array of ous for .ous" do
71
- @model.ous.should be_a Array
72
- end
73
-
74
- it "should update from adauth" do
75
- @model.name = "Adauth Testing user that should be different"
76
- @model.name.should_not eq(@user.name)
77
- @model.update_from_adauth(@user)
78
- @model.name.should eq(@user.name)
79
- end
80
- end
@@ -1,213 +0,0 @@
1
- require 'lib/adauth'
2
- require 'yaml'
3
-
4
- describe Adauth, "#authenticate" do
5
- before :each do
6
- @yaml = YAML::load(File.open('spec/test_data.yml'))
7
- Adauth.configure do |c|
8
- c.domain = @yaml["domain"]["domain"]
9
- c.server = @yaml["domain"]["server"]
10
- c.port = @yaml["domain"]["port"]
11
- c.base = @yaml["domain"]["base"]
12
- end
13
- end
14
-
15
- it "should succesfully authenticate with the example user" do
16
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_a Adauth::User
17
- end
18
-
19
- it "should return nil for a failed bind" do
20
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["group"]).should == nil
21
- end
22
-
23
- it "should return nil for a failed bind whilst using allowed groups" do
24
- Adauth.config.allowed_groups = @yaml["domain"]["pass_allowed_groups"]
25
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["group"]).should be_nil
26
- end
27
-
28
- it "should allow users who are in an allowed group" do
29
- Adauth.config.allowed_groups = @yaml["domain"]["pass_allowed_groups"]
30
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_a Adauth::User
31
- end
32
-
33
- it "should dis-allow users who are not in an allowed group" do
34
- Adauth.config.allowed_groups = @yaml["domain"]["fail_allowed_groups"]
35
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
36
- end
37
-
38
- it "should dis-allow users who are in a denied group" do
39
- Adauth.config.denied_groups = @yaml["domain"]["pass_allowed_groups"]
40
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
41
- end
42
-
43
- it "should allow users who are in a denied group" do
44
- Adauth.config.denied_groups = @yaml["domain"]["fail_allowed_groups"]
45
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_a Adauth::User
46
- end
47
-
48
- it "should allow users who are in an allowed ou" do
49
- Adauth.config.allowed_ous = @yaml["domain"]["pass_allowed_ous"]
50
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_a Adauth::User
51
- end
52
-
53
- it "should dis-allow users who are not in an allowed ou" do
54
- Adauth.config.allowed_ous = @yaml["domain"]["fail_allowed_ous"]
55
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
56
- end
57
-
58
- it "should dis-allow users who are in a denied ou" do
59
- Adauth.config.denied_ous = @yaml["domain"]["pass_allowed_ous"]
60
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
61
- end
62
-
63
- it "should allow users who are not in a denied ou" do
64
- Adauth.config.denied_ous = @yaml["domain"]["fail_allowed_ous"]
65
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_a Adauth::User
66
- end
67
-
68
- it "should dis-allow a user who is in an allowed ou but not an allowed group" do
69
- Adauth.config.allowed_ous = @yaml["domain"]["pass_allowed_ous"]
70
- Adauth.config.denied_groups = @yaml["domain"]["pass_allowed_groups"]
71
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
72
- end
73
-
74
- it "should dis-allow a user who is in an allowed group but not an allowed ou" do
75
- Adauth.config.denied_ous = @yaml["domain"]["pass_allowed_ous"]
76
- Adauth.config.allowed_groups = @yaml["domain"]["pass_allowed_groups"]
77
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
78
- end
79
-
80
- it "should allow a user who is in an allowed ou and an allowed group" do
81
- Adauth.config.allowed_ous = @yaml["domain"]["pass_allowed_ous"]
82
- Adauth.config.allowed_groups = @yaml["domain"]["pass_allowed_groups"]
83
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_a Adauth::User
84
- end
85
-
86
- it "should dis-allow a user who is in a dis-allowed ou and a dis-allowed group" do
87
- Adauth.config.denied_ous = @yaml["domain"]["pass_allowed_ous"]
88
- Adauth.config.denied_groups = @yaml["domain"]["pass_allowed_groups"]
89
- Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"]).should be_nil
90
- end
91
- end
92
-
93
- describe Adauth::User do
94
- before :each do
95
- @yaml = YAML::load(File.open('spec/test_data.yml'))
96
- Adauth.configure do |c|
97
- c.domain = @yaml["domain"]["domain"]
98
- c.server = @yaml["domain"]["server"]
99
- c.port = @yaml["domain"]["port"]
100
- c.base = @yaml["domain"]["base"]
101
- end
102
- @user = Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"])
103
- end
104
-
105
- it "should return groups for an authenticated user" do
106
- @user.groups.should be_a Array
107
- end
108
-
109
- it "should return ous for an authenticated user" do
110
- @user.ous.should be_a Array
111
- end
112
-
113
- it "should have all the ous from the data file" do
114
- @yaml["user"]["ous"].each do |ou|
115
- @user.ous.include?(ou).should be_true
116
- end
117
- end
118
-
119
- it "should return true for a member_of test using the users group" do
120
- @user.member_of?(@yaml["user"]["group"]).should == true
121
- end
122
-
123
- it "should return false for a member_of test using the users password" do
124
- @user.member_of?(@yaml["user"]["password"]).should == false
125
- end
126
-
127
- it "should have the correct user" do
128
- @user.login.should == @yaml["user"]["login"]
129
- end
130
- end
131
-
132
- describe "Adauth::User custom returns" do
133
- before :each do
134
- @yaml = YAML::load(File.open('spec/test_data.yml'))
135
- Adauth.configure do |c|
136
- c.domain = @yaml["domain"]["domain"]
137
- c.server = @yaml["domain"]["server"]
138
- c.port = @yaml["domain"]["port"]
139
- c.base = @yaml["domain"]["base"]
140
- c.ad_sv_attrs = { :phone => :telephonenumber }
141
- c.ad_mv_attrs = { :ous => [ :memberof,
142
- Proc.new {|g| g.sub(/.*?OU=(.*?),.*/, '\1')} ] }
143
- end
144
- @user = Adauth.authenticate(@yaml["user"]["login"], @yaml["user"]["password"])
145
- end
146
-
147
- it "should pickup the custom single value from AD" do
148
- @user.phone.should be_a String
149
- end
150
-
151
- it "should pickup the custom multi value from AD" do
152
- @user.ous.should be_a Array
153
- end
154
- end
155
-
156
- describe Adauth::AdminConnection do
157
- before :each do
158
- @yaml = YAML::load(File.open('spec/test_data.yml'))
159
- Adauth.configure do |c|
160
- c.domain = @yaml["domain"]["domain"]
161
- c.server = @yaml["domain"]["server"]
162
- c.port = @yaml["domain"]["port"]
163
- c.base = @yaml["domain"]["base"]
164
- c.admin_user = @yaml["domain"]["admin_user"]
165
- c.admin_password = @yaml["domain"]["admin_password"]
166
- end
167
- end
168
-
169
- it "should create a connection" do
170
- Adauth::AdminConnection.bind.should be_a Net::LDAP
171
- end
172
-
173
- it "should raise an exception if the password is wrong" do
174
- Adauth.config.admin_password = @yaml["domain"]["admin_password"][1]
175
- lambda { Adauth::AdminConnection.bind }.should raise_error
176
- end
177
- end
178
-
179
- describe Adauth, "passwordless_login" do
180
- before :each do
181
- @yaml = YAML::load(File.open('spec/test_data.yml'))
182
- Adauth.configure do |c|
183
- c.domain = @yaml["domain"]["domain"]
184
- c.server = @yaml["domain"]["server"]
185
- c.port = @yaml["domain"]["port"]
186
- c.base = @yaml["domain"]["base"]
187
- c.admin_user = @yaml["domain"]["admin_user"]
188
- c.admin_password = @yaml["domain"]["admin_password"]
189
- end
190
- end
191
-
192
- it "should return an user when asked to" do
193
- Adauth.passwordless_login(@yaml["user"]["login"]).should be_a Adauth::User
194
- end
195
-
196
- it "should be a viable user when passwordless login is used" do
197
- Adauth.passwordless_login(@yaml["user"]["login"]).login.should eq(@yaml["user"]["login"])
198
- end
199
-
200
- it "should raise an exception on timeout" do
201
- Adauth.configure do |c|
202
- c.domain = @yaml["domain"]["domain"]
203
- c.server = "127.0.0.2"
204
- c.port = @yaml["domain"]["port"]
205
- c.base = @yaml["domain"]["base"]
206
- c.admin_user = @yaml["domain"]["admin_user"]
207
- c.admin_password = @yaml["domain"]["admin_password"]
208
- end
209
-
210
- lambda { Adauth::AdminConnection.bind }.should raise_error
211
-
212
- end
213
- end