socialcast 1.3.5 → 1.3.6

Sign up to get free protection for your applications and to get access to all the features.
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: []