socialcast 1.0.1 → 1.0.2

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.
@@ -149,13 +149,16 @@ module Socialcast
149
149
  end
150
150
 
151
151
  memberships = entry[membership_attribute]
152
- if memberships.include?(permission_mappings['account_types']['external'])
152
+ external_ldap_group = permission_mappings.fetch('account_types', {})['external']
153
+ if external_ldap_group && memberships.include?(external_ldap_group)
153
154
  user.tag! 'account-type', 'external'
154
155
  else
155
156
  user.tag! 'account-type', 'member'
156
- user.tag! 'roles', :type => 'array' do |roles|
157
- permission_mappings['roles'].each_pair do |socialcast_role, ldap_role|
158
- roles.role socialcast_role if entry[membership_attribute].include?(ldap_role)
157
+ if permission_roles_mappings = permission_mappings['roles']
158
+ user.tag! 'roles', :type => 'array' do |roles|
159
+ permission_roles_mappings.each_pair do |socialcast_role, ldap_group|
160
+ roles.role socialcast_role if entry[membership_attribute].include?(ldap_group)
161
+ end
159
162
  end
160
163
  end
161
164
  end
@@ -1,3 +1,3 @@
1
1
  module Socialcast
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/spec/cli_spec.rb CHANGED
@@ -2,6 +2,27 @@ require 'spec_helper'
2
2
 
3
3
  describe Socialcast::CLI do
4
4
  describe '#provision' do
5
+ context 'with ldap.yml configuration excluding permission_mappings' do
6
+ before do
7
+ @entry = Net::LDAP::Entry.new("dc=example,dc=com")
8
+ @entry[:mail] = 'ryan@example.com'
9
+
10
+ Net::LDAP.any_instance.stub(:search).and_yield(@entry)
11
+
12
+ @result = ''
13
+ Zlib::GzipWriter.stub(:open).and_yield(@result)
14
+ File.stub(:open).with(/ldap.yml/).and_yield(File.read(File.join(File.dirname(__FILE__), 'fixtures', 'ldap_without_permission_mappings.yml')))
15
+ File.stub(:open).with(/users.xml.gz/, anything).and_yield(@result)
16
+ File.stub(:open).with(/credentials.yml/).and_yield(File.read(File.join(File.dirname(__FILE__), 'fixtures', 'credentials.yml')))
17
+
18
+ RestClient::Resource.any_instance.stub(:post)
19
+
20
+ Socialcast::CLI.start ['provision', '-c', 'spec/fixtures/ldap.yml']
21
+ end
22
+ it 'excludes roles element' do
23
+ @result.should_not =~ %r{roles}
24
+ end
25
+ end
5
26
  context 'with external group member' do
6
27
  before do
7
28
  @entry = Net::LDAP::Entry.new("dc=example,dc=com")
@@ -0,0 +1,53 @@
1
+ ---
2
+ # LDAP connections
3
+ connections:
4
+ example_connection_1:
5
+ username: "cn=Directory Manager"
6
+ password: "test"
7
+ host: localhost
8
+ port: 1389
9
+ basedn: "dc=example,dc=com"
10
+ filter: "(mail=*)"
11
+
12
+
13
+ # LDAP attribute mappings
14
+ mappings:
15
+ first_name: givenName
16
+ last_name: sn
17
+ email: mail
18
+ # only use employee_number if the email is unknown
19
+ # employee_number: emp_id
20
+ # only use unique_identifier if you do not wish to use email as the main user identification method
21
+ # unique_identifier: samaccountname
22
+
23
+
24
+ # Map LDAP Group Memberships to Socialcast Permissions
25
+ # permission_mappings:
26
+ # # configure LDAP field for group memberships (ex: memberof, isMemberOf, etc)
27
+ # attribute_name: isMemberOf
28
+ # account_types:
29
+ # external: "cn=External,dc=example,dc=com"
30
+ # roles:
31
+ # tenant_admin: "cn=Admins,dc=example,dc=com"
32
+ # sbi_admin: "cn=SbiAdmins,dc=example,dc=com"
33
+ # reach_admin: "cn=ReachAdmins,dc=example,dc=com"
34
+ # town_hall_admin: "cn=TownHallAdmins,dc=example,dc=com"
35
+
36
+
37
+ # general script options
38
+ options:
39
+ # cleanup the extracted ldap data file after run is complete
40
+ delete_users_file: false
41
+ # skip sending emails to newly activated users
42
+ skip_emails: true
43
+ # do not actually provision accounts
44
+ # useful during testing
45
+ test: true
46
+
47
+
48
+ # http options for connecting to Socialcast servers
49
+ http:
50
+ timeout: 660
51
+ # optional setting if script must connect to Socialcast server through a proxy
52
+ # proxy: "http://username:password@proxy.company.com:3128"
53
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socialcast
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 2
10
+ version: 1.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Sonnek
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-07-13 00:00:00 Z
19
+ date: 2011-07-14 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: rest-client
@@ -159,6 +159,7 @@ files:
159
159
  - spec/cli_spec.rb
160
160
  - spec/fixtures/credentials.yml
161
161
  - spec/fixtures/ldap.yml
162
+ - spec/fixtures/ldap_without_permission_mappings.yml
162
163
  - spec/spec_helper.rb
163
164
  homepage: http://github.com/wireframe/socialcast-command-line
164
165
  licenses: []
@@ -197,4 +198,5 @@ test_files:
197
198
  - spec/cli_spec.rb
198
199
  - spec/fixtures/credentials.yml
199
200
  - spec/fixtures/ldap.yml
201
+ - spec/fixtures/ldap_without_permission_mappings.yml
200
202
  - spec/spec_helper.rb