socialcast 1.3.14 → 1.3.15

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9de45230b2671da6dbe2c97752900207a128bb08
4
- data.tar.gz: 2d24c42f2afbfba3c82cca8a3b592b7fe53f0cdc
3
+ metadata.gz: 773760fd92b5e744a225bcd6dfd00eeb1fa3dd0d
4
+ data.tar.gz: 80168ae8554b118c9452e388b0a1df35af2eaddf
5
5
  SHA512:
6
- metadata.gz: c876a5f5b3e9865dfca6507d3b03e40cd0521af86418572dc0111f0f1037b3c4d75840dc490e793be901594a905cd65565be8abc026862fc29ada3e804215e63
7
- data.tar.gz: ecfebccebe6e9180a68682d2dd52a7141960b0d05e3993e38c46a82f0bd67b9a4a94d7d4e34e2dfb5aa7f22e8c8000216d4d65aaff8de47f1082fcf9e09be3cf
6
+ metadata.gz: 533bc9e567674bc219a022c032cc15200bd1e843de464720d90292bd6a30e8128d5cca9e7f57ddbde6fd8aa8c4ebbd7b639111b5f793f27965098978498f1ad0
7
+ data.tar.gz: a1796b2299b36a11d591d607a096dde3756b29a7964f65deaec2bd43777eabc1cafc2fe4540a58c543b1c8e319e1ee51d7ce2c651b081cd2a417e4fa7c932517
@@ -6,7 +6,8 @@ module Socialcast
6
6
  attr_accessor :sync_strategy
7
7
 
8
8
  def sync(strategy_klass = ApiSyncStrategy)
9
- assert_ldap_connections_support_photo!
9
+ assert_no_unsupported_configurations
10
+
10
11
  sync_strategy = strategy_klass.new(self)
11
12
  process_options = {
12
13
  :http_config => http_config,
@@ -54,6 +55,16 @@ module Socialcast
54
55
  @default_profile_photo_id ||= Socialcast::CommandLine::Authenticate.current_user['community']['default_profile_photo_id']
55
56
  end
56
57
 
58
+ def configured?
59
+ unsupported_configurations.none?
60
+ end
61
+
62
+ def unsupported_configurations
63
+ @unsupported_configurations ||= @ldap_config['connections'].reject do |connection_name, _|
64
+ LDAPConnector.attribute_mappings_for(connection_name, @ldap_config).key? LDAPConnector::PROFILE_PHOTO_ATTRIBUTE
65
+ end.keys
66
+ end
67
+
57
68
  protected
58
69
 
59
70
  def each_photo_hash
@@ -64,13 +75,11 @@ module Socialcast
64
75
  end
65
76
  end
66
77
 
67
- def assert_ldap_connections_support_photo!
68
- @ldap_config['connections'].each do |connection_name, _|
69
- unless LDAPConnector.attribute_mappings_for(connection_name, @ldap_config).key? LDAPConnector::PROFILE_PHOTO_ATTRIBUTE
70
- message = "Cannot sync photos: #{connection_name} does not have a mapping for the profile photo field."
71
- log(message)
72
- raise Socialcast::CommandLine::Provisioner::ProvisionError, message
73
- end
78
+ def assert_no_unsupported_configurations
79
+ unless configured?
80
+ message = "Cannot sync photos: #{unsupported_configurations.join(', ')} do not have a mapping for the profile photo field."
81
+ log(message)
82
+ raise Socialcast::CommandLine::Provisioner::ProvisionError, message
74
83
  end
75
84
  end
76
85
 
@@ -98,7 +107,7 @@ module Socialcast
98
107
 
99
108
  MAX_BATCH_SIZE = 50
100
109
 
101
- def initialize(provisioner, options = {})
110
+ def initialize(provisioner)
102
111
  @provisioner = provisioner
103
112
  end
104
113
 
@@ -1,5 +1,5 @@
1
1
  module Socialcast
2
2
  module CommandLine
3
- VERSION = "1.3.14"
3
+ VERSION = "1.3.15"
4
4
  end
5
5
  end
@@ -0,0 +1,52 @@
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
+ mappings:
12
+ email: mailCon
13
+ profile_photo: photoCon
14
+
15
+ example_connection_2:
16
+ username: "cn=Directory Manager"
17
+ password: "test"
18
+ host: localhost
19
+ port: 1389
20
+ basedn: "dc=example,dc=com"
21
+ filter: "(mail=*)"
22
+ mappings:
23
+ email: mailCon2
24
+ first_name: firstName
25
+
26
+ # Map LDAP Group Memberships to Socialcast Permissions
27
+ permission_mappings:
28
+ # configure LDAP field for group memberships (ex: memberof, isMemberOf, etc)
29
+ attribute_name: isMemberOf
30
+ account_types:
31
+ external: "cn=External,dc=example,dc=com"
32
+ roles:
33
+ tenant_admin: "cn=Admins,dc=example,dc=com"
34
+ sbi_admin: "cn=SbiAdmins,dc=example,dc=com"
35
+ reach_admin: "cn=ReachAdmins,dc=example,dc=com"
36
+ town_hall_admin: "cn=TownHallAdmins,dc=example,dc=com"
37
+
38
+
39
+ # general script options
40
+ options:
41
+ # cleanup the extracted ldap data file after run is complete
42
+ delete_users_file: false
43
+ # skip sending emails to newly activated users
44
+ skip_emails: true
45
+ # do not actually provision accounts
46
+ # useful during testing
47
+ test: true
48
+
49
+
50
+ # http options for connecting to Socialcast servers
51
+ http:
52
+ timeout: 660
@@ -3,6 +3,7 @@ require 'spec_helper'
3
3
  describe Socialcast::CommandLine::ProvisionPhoto do
4
4
  let!(:ldap_with_profile_photo_config) { YAML.load_file(File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'ldap_with_profile_photo.yml')) }
5
5
  let!(:ldap_multiple_connection_mapping_config) { YAML.load_file(File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'ldap_with_multiple_connection_mappings.yml')) }
6
+ let!(:ldap_multiple_incomplete_connection_mapping_config) { YAML.load_file(File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'ldap_with_multiple_incomplete_connection_mappings.yml')) }
6
7
  let(:default_profile_photo_id) { 3 }
7
8
  let(:another_profile_photo_id) { 4 }
8
9
 
@@ -20,7 +21,8 @@ describe Socialcast::CommandLine::ProvisionPhoto do
20
21
  describe '#sync' do
21
22
  context "with a single ldap connection" do
22
23
  let(:options) { {} }
23
- subject(:sync_photos) { Socialcast::CommandLine::ProvisionPhoto.new(ldap_with_profile_photo_config, options).sync }
24
+ let(:provisioner) { Socialcast::CommandLine::ProvisionPhoto.new(ldap_with_profile_photo_config, options) }
25
+ subject(:sync_photos) { provisioner.sync }
24
26
  let(:user_search_resource) { double(:user_search_resource) }
25
27
  let(:user_submit_resource) { double(:user_submit_resource) }
26
28
  let(:data_fingerprint) { '5d41402abc4b2a76b9719d911017c592' }
@@ -110,7 +112,7 @@ describe Socialcast::CommandLine::ProvisionPhoto do
110
112
  end
111
113
  end
112
114
 
113
- context "with multiple ldap connections" do
115
+ context "with multiple fully configured ldap connections" do
114
116
  let(:user_search_resource) { double(:user_search_resource) }
115
117
  let(:search_api_response) do
116
118
  {
@@ -136,8 +138,8 @@ describe Socialcast::CommandLine::ProvisionPhoto do
136
138
  ]
137
139
  }
138
140
  end
139
-
140
- let(:sync_photos) { Socialcast::CommandLine::ProvisionPhoto.new(ldap_multiple_connection_mapping_config, {}).sync }
141
+ let(:provisioner) { Socialcast::CommandLine::ProvisionPhoto.new(ldap_multiple_connection_mapping_config, {}) }
142
+ let(:sync_photos) { provisioner.sync }
141
143
  let(:binary_photo_data) { "\x89PNGabc".force_encoding('binary') }
142
144
  before do
143
145
  Socialcast::CommandLine::ProvisionPhoto::ApiSyncStrategy.any_instance.stub(:batch_size).and_return(2)
@@ -175,6 +177,22 @@ describe Socialcast::CommandLine::ProvisionPhoto do
175
177
  sync_photos
176
178
  end
177
179
  it 'uses attributes from each connection' do end
180
+ it 'is considered fully configured' do
181
+ expect(provisioner.configured?).to be_true
182
+ end
183
+ end
184
+ context "with multiple incompletely configured ldap connections" do
185
+ let(:provisioner) { Socialcast::CommandLine::ProvisionPhoto.new(ldap_multiple_incomplete_connection_mapping_config, {}) }
186
+ let(:sync_photos) { provisioner.sync }
187
+ before do
188
+ expect { sync_photos }.to raise_error Socialcast::CommandLine::Provisioner::ProvisionError
189
+ end
190
+ it 'is not considered fully configured' do
191
+ expect(provisioner.configured?).to be_false
192
+ end
193
+ it 'provides a list of incomplete configurations' do
194
+ expect(provisioner.unsupported_configurations).to eq(['example_connection_2'])
195
+ end
178
196
  end
179
197
  end
180
198
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socialcast
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.14
4
+ version: 1.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-07-28 00:00:00.000000000 Z
13
+ date: 2014-07-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -241,6 +241,7 @@ files:
241
241
  - spec/fixtures/ldap_with_manager_attribute.yml
242
242
  - spec/fixtures/ldap_with_multiple_connection_mappings.yml
243
243
  - spec/fixtures/ldap_with_multiple_connection_permission_mappings.yml
244
+ - spec/fixtures/ldap_with_multiple_incomplete_connection_mappings.yml
244
245
  - spec/fixtures/ldap_with_plugin_mapping.yml
245
246
  - spec/fixtures/ldap_with_profile_photo.yml
246
247
  - spec/fixtures/ldap_with_roles_without_account_type.yml
@@ -299,6 +300,7 @@ test_files:
299
300
  - spec/fixtures/ldap_with_manager_attribute.yml
300
301
  - spec/fixtures/ldap_with_multiple_connection_mappings.yml
301
302
  - spec/fixtures/ldap_with_multiple_connection_permission_mappings.yml
303
+ - spec/fixtures/ldap_with_multiple_incomplete_connection_mappings.yml
302
304
  - spec/fixtures/ldap_with_plugin_mapping.yml
303
305
  - spec/fixtures/ldap_with_profile_photo.yml
304
306
  - spec/fixtures/ldap_with_roles_without_account_type.yml