socialcast 1.3.5 → 1.3.6

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NWI2YTIwMmZjZjVmOGY1YTQ0ZTMzMzBiOWExY2E3NGRhMzg4Y2Y1NA==
5
- data.tar.gz: !binary |-
6
- NjU1MmUyYjE3ZWI1NmE2NjhiZjFiMWI3ZTFlYTU2ODNkMGM4YmI2ZA==
2
+ SHA1:
3
+ metadata.gz: 059c8d71c405b6bd225ddf6bcadd22c55448c244
4
+ data.tar.gz: 73dc16b3f63221865f07dd46c74f992d0f8ae96a
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NDhmMTEyM2VkYTFhOTQxM2JkMmIwM2M0N2Q3YWUxNzJjNjBlMWJkMGYzNGY3
10
- NThmYTA2ZjViY2M4MDY5ZDQ3Y2QyOTI3NmY1ZTRjNjNiYzMxYjk1ODUzYmI2
11
- MmIwMzg0NzRkNWJmMDMzYTk4ZTk1NjE0YWRjMjJjZDA1MmEzYzM=
12
- data.tar.gz: !binary |-
13
- YTkwYTYwZjA3NzU4ZWI2YTRjM2MxZmJmOWNjODhjYTY3MjY3YjBkYzc2NjQw
14
- ZGZjZGMzMTBhOWRmNDI4Nzg2NTkwZjE3YWNiZGFiOWEzMzk4NmQ5NzQzYmEx
15
- ZTJjODk3MGQyY2Y3YWFkMWY2ZmIwOWViMmYyZmQ1NDE3MTg4NjE=
6
+ metadata.gz: 49c4a5675ab1f9832d56aa7ee23678977424020cd002573c72183f1842f6a72adb23ffb1a18464720abcdaf42da17ea5594545866f59174cf86c4746332c1cff
7
+ data.tar.gz: 9ca90bb330803ed0dae3fe8ae78b86fccdb1c86c934ed43bf3497c41e455ba494f740abecba293132496149ad6d4eaf292b9d90586239cb7909d90769919b635
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm use ruby-1.9.3-p125@socialcast-command-line --create
1
+ rvm use ruby-2.1.1@socialcast-command-line --create
@@ -104,7 +104,6 @@ module Socialcast
104
104
  method_option :test, :type => :boolean, :desc => 'Do not persist changes'
105
105
  method_option :skip_emails, :type => :boolean, :desc => 'Do not send signup emails to users'
106
106
  method_option :force, :type => :boolean, :aliases => '-f', :default => false, :desc => 'Proceed with provisioning even if no users are found, which would deactivate all users in the community'
107
- method_option :sanity_check, :type => :boolean, :default => false, :desc => 'Double check that users marked for termination really no longer exist'
108
107
  method_option :plugins, :type => :array, :desc => "Pass in an array of plugins. Can be either the gem require or the absolute path to a ruby file"
109
108
  def provision
110
109
  config = ldap_config options
@@ -50,33 +50,6 @@ module Socialcast
50
50
  nil
51
51
  end
52
52
 
53
- def ldap_search_attributes
54
- membership_attribute = permission_mappings.fetch 'attribute_name', 'memberof'
55
- attributes = attribute_mappings.values.map do |mapping_value|
56
- value = begin
57
- mapping_value.camelize.constantize
58
- rescue NameError
59
- mapping_value
60
- end
61
-
62
- case value
63
- when Hash
64
- dup_mapping_value = value.dup
65
- dup_mapping_value.delete("value")
66
- dup_mapping_value.values
67
- when String
68
- value
69
- when Class, Module
70
- if value.respond_to?(:attributes)
71
- value.attributes
72
- else
73
- mapping_value
74
- end
75
- end
76
- end.flatten
77
- attributes << membership_attribute
78
- end
79
-
80
53
  def attribute_mappings
81
54
  @attribute_mappings ||= connection_config['mappings']
82
55
  @attribute_mappings ||= @config.fetch 'mappings', {}
@@ -107,11 +80,39 @@ module Socialcast
107
80
  end
108
81
  end
109
82
 
83
+ private
84
+
110
85
  def connection_config
111
86
  @config["connections"][connection_name]
112
87
  end
113
88
 
114
- private
89
+ def ldap_search_attributes
90
+ membership_attribute = permission_mappings.fetch 'attribute_name', 'memberof'
91
+ attributes = attribute_mappings.values.map do |mapping_value|
92
+ value = begin
93
+ mapping_value.camelize.constantize
94
+ rescue NameError
95
+ mapping_value
96
+ end
97
+
98
+ case value
99
+ when Hash
100
+ dup_mapping_value = value.dup
101
+ dup_mapping_value.delete("value")
102
+ dup_mapping_value.values
103
+ when String
104
+ value
105
+ when Class, Module
106
+ if value.respond_to?(:attributes)
107
+ value.attributes
108
+ else
109
+ mapping_value
110
+ end
111
+ end
112
+ end.flatten
113
+ attributes << membership_attribute
114
+ end
115
+
115
116
 
116
117
  def ldap
117
118
  @ldap ||= Net::LDAP.new(:host => connection_config["host"], :port => connection_config["port"], :base => connection_config["basedn"]).tap do |ldap_instance|
@@ -52,24 +52,6 @@ module Socialcast
52
52
  end # export
53
53
  end # gzip
54
54
 
55
- if @options[:sanity_check]
56
- puts "Sanity checking users currently marked as needing to be terminated"
57
- each_ldap_connector do |connector|
58
- attr_mappings = connector.attribute_mappings
59
- (current_socialcast_users(http_config) - user_whitelist).each do |user_identifiers|
60
- combined_filters = []
61
- ['email', 'unique_identifier', 'employee_number'].each_with_index do |identifier, index|
62
- combined_filters << ((attr_mappings[identifier].blank? || user_identifiers[index].nil?) ? nil : Net::LDAP::Filter.eq(attr_mappings[identifier], user_identifiers[index]))
63
- end
64
- combined_filters.compact!
65
- filter = ((combined_filters.size > 1) ? '(|%s)' : '%s') % combined_filters.join(' ')
66
- filter = Net::LDAP::Filter.construct(filter) & Net::LDAP::Filter.construct(connector.connection_config["filter"])
67
- ldap_result = connector.ldap.search(:return_result => true, :base => connector.connection_config["basedn"], :filter => filter, :attributes => connector.ldap_search_attributes)
68
- raise ProvisionError.new "Found user marked for termination that should not be terminated: #{user_identifiers}" unless ldap_result.blank?
69
- end
70
- end
71
- end
72
-
73
55
  if user_whitelist.empty? && !@options[:force]
74
56
  raise ProvisionError.new "Skipping upload to Socialcast since no users were found"
75
57
  else
@@ -177,30 +159,6 @@ module Socialcast
177
159
  end
178
160
  puts "Finished scanning #{count} users"
179
161
  end
180
-
181
- def current_socialcast_users(http_config)
182
- current_socialcast_list = Set.new
183
- request_params = {:per_page => 500}
184
- request_params[:page] = 1
185
- resource = create_socialcast_user_index_request(http_config, request_params)
186
- loop do
187
- response = resource.get :accept => :json
188
- result = JSON.parse(response)
189
- users = result["users"]
190
- break if users.blank?
191
- request_params[:page] += 1
192
- resource = create_socialcast_user_index_request(http_config, request_params)
193
- users.each do |user|
194
- current_socialcast_list << [user['contact_info']['email'], user['company_login'], user['employee_number']]
195
- end
196
- end
197
- current_socialcast_list
198
- end
199
-
200
- def create_socialcast_user_index_request(http_config, request_params)
201
- path_template = "/api/users?per_page=%{per_page}&page=%{page}"
202
- Socialcast::CommandLine.resource_for_path((path_template % request_params), http_config)
203
- end
204
162
  end
205
163
  end
206
164
  end
@@ -1,5 +1,5 @@
1
1
  module Socialcast
2
2
  module CommandLine
3
- VERSION = "1.3.5"
3
+ VERSION = "1.3.6"
4
4
  end
5
5
  end
@@ -497,36 +497,5 @@ describe Socialcast::CommandLine::CLI do
497
497
  @result.should =~ /<label>manager_email<\/label>\s*<value>bossman@example.com<\/value>/
498
498
  end
499
499
  end
500
-
501
- context "with a user marked for termination that shouldn't be and sanity_check option passed" do
502
- before do
503
- @entry = Net::LDAP::Entry.new("cn=Ryan,dc=example,dc=com")
504
- @entry[:mail] = 'ryan@example.com'
505
- @valid_entry = Net::LDAP::Entry.new("cn=Sean,dc=example,dc=com")
506
- @valid_entry[:mail] = 'sean@example.com'
507
- ldap_search_block = double("ldapsearchblock")
508
- ldap_search_block.should_receive(:search).and_yield(@entry)
509
- ldap_return = double("ldapreturn")
510
- ldap_return.should_receive(:search).with(include(:filter => Net::LDAP::Filter.construct("(&(mail=sean@example.com)(mail=*))"))).and_return(@valid_entry)
511
-
512
- Socialcast::CommandLine::LDAPConnector.any_instance.should_receive(:ldap).and_return(ldap_search_block, ldap_return)
513
-
514
- @result = ''
515
- Zlib::GzipWriter.stub(:open).and_yield(@result)
516
- Socialcast::CommandLine::CLI.any_instance.should_receive(:ldap_config).and_return(ldap_default_config)
517
- File.stub(:open).with(/users.xml.gz/, anything).and_yield(@result)
518
-
519
- Socialcast::CommandLine::Provision.any_instance.should_receive(:create_socialcast_user_index_request).and_return(
520
- double("request1", :get => {"users" => [{"contact_info" => {"email" => @entry[:mail][0]}}]}.to_json),
521
- double("request2", :get => {"users" => [{"contact_info" => {"email" => @valid_entry[:mail][0]}}]}.to_json),
522
- double("empty_request", :get => {"users" => []}.to_json)
523
- )
524
-
525
- RestClient::Resource.any_instance.should_receive(:post).never
526
- end
527
- it 'does not post to Socialcast and throws Kernel.abort' do
528
- lambda { Socialcast::CommandLine::CLI.start ['provision', '--sanity_check', true] }.should raise_error SystemExit
529
- end
530
- end
531
500
  end
532
501
  end
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.5
4
+ version: 1.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
@@ -10,162 +10,162 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-05-05 00:00:00.000000000 Z
13
+ date: 2014-05-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ~>
19
+ - - "~>"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '1.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ~>
26
+ - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '1.4'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: json
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: '1.4'
36
- - - ! '>='
36
+ - - ">="
37
37
  - !ruby/object:Gem::Version
38
38
  version: 1.4.6
39
39
  type: :runtime
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  requirements:
43
- - - ~>
43
+ - - "~>"
44
44
  - !ruby/object:Gem::Version
45
45
  version: '1.4'
46
- - - ! '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: 1.4.6
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: thor
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0.14'
56
- - - ! '>='
56
+ - - ">="
57
57
  - !ruby/object:Gem::Version
58
58
  version: 0.14.6
59
59
  type: :runtime
60
60
  prerelease: false
61
61
  version_requirements: !ruby/object:Gem::Requirement
62
62
  requirements:
63
- - - ~>
63
+ - - "~>"
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0.14'
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.14.6
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: highline
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.6'
76
- - - ! '>='
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: 1.6.2
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - ~>
83
+ - - "~>"
84
84
  - !ruby/object:Gem::Version
85
85
  version: '1.6'
86
- - - ! '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: 1.6.2
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: socialcast-net-ldap
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ~>
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0.1'
96
- - - ! '>='
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
98
  version: 0.1.6
99
99
  type: :runtime
100
100
  prerelease: false
101
101
  version_requirements: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ~>
103
+ - - "~>"
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0.1'
106
- - - ! '>='
106
+ - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: 0.1.6
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: activeresource
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - ~>
113
+ - - "~>"
114
114
  - !ruby/object:Gem::Version
115
115
  version: '4.0'
116
116
  type: :runtime
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ~>
120
+ - - "~>"
121
121
  - !ruby/object:Gem::Version
122
122
  version: '4.0'
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: activesupport
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - ~>
127
+ - - "~>"
128
128
  - !ruby/object:Gem::Version
129
129
  version: '4.0'
130
130
  type: :runtime
131
131
  prerelease: false
132
132
  version_requirements: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - ~>
134
+ - - "~>"
135
135
  - !ruby/object:Gem::Version
136
136
  version: '4.0'
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: rspec
139
139
  requirement: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - ~>
141
+ - - "~>"
142
142
  - !ruby/object:Gem::Version
143
143
  version: '2.11'
144
144
  type: :development
145
145
  prerelease: false
146
146
  version_requirements: !ruby/object:Gem::Requirement
147
147
  requirements:
148
- - - ~>
148
+ - - "~>"
149
149
  - !ruby/object:Gem::Version
150
150
  version: '2.11'
151
151
  - !ruby/object:Gem::Dependency
152
152
  name: webmock
153
153
  requirement: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - ~>
155
+ - - "~>"
156
156
  - !ruby/object:Gem::Version
157
157
  version: '1.7'
158
- - - ! '>='
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
160
  version: 1.7.7
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ~>
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
167
  version: '1.7'
168
- - - ! '>='
168
+ - - ">="
169
169
  - !ruby/object:Gem::Version
170
170
  version: 1.7.7
171
171
  - !ruby/object:Gem::Dependency
@@ -186,14 +186,14 @@ dependencies:
186
186
  name: pry
187
187
  requirement: !ruby/object:Gem::Requirement
188
188
  requirements:
189
- - - ~>
189
+ - - "~>"
190
190
  - !ruby/object:Gem::Version
191
191
  version: '0.9'
192
192
  type: :development
193
193
  prerelease: false
194
194
  version_requirements: !ruby/object:Gem::Requirement
195
195
  requirements:
196
- - - ~>
196
+ - - "~>"
197
197
  - !ruby/object:Gem::Version
198
198
  version: '0.9'
199
199
  description: publish messages to your stream from a command line interface
@@ -204,11 +204,11 @@ executables:
204
204
  extensions: []
205
205
  extra_rdoc_files: []
206
206
  files:
207
- - .document
208
- - .gitignore
209
- - .rspec
210
- - .rvmrc
211
- - .travis.yml
207
+ - ".document"
208
+ - ".gitignore"
209
+ - ".rspec"
210
+ - ".rvmrc"
211
+ - ".travis.yml"
212
212
  - CONTRIBUTORS.txt
213
213
  - Gemfile
214
214
  - LICENSE.txt
@@ -259,12 +259,12 @@ require_paths:
259
259
  - lib
260
260
  required_ruby_version: !ruby/object:Gem::Requirement
261
261
  requirements:
262
- - - ! '>='
262
+ - - ">="
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0'
265
265
  required_rubygems_version: !ruby/object:Gem::Requirement
266
266
  requirements:
267
- - - ! '>='
267
+ - - ">="
268
268
  - !ruby/object:Gem::Version
269
269
  version: '0'
270
270
  requirements: []