gooddata 0.6.15 → 0.6.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -224,8 +224,7 @@ module GoodData
224
224
  @connection.get uri, opts, & block
225
225
  end
226
226
 
227
- # FIXME: Invstigate _file argument
228
- def get_project_webdav_path(_file, opts = { :project => GoodData.project })
227
+ def project_webdav_path(opts = { :project => GoodData.project })
229
228
  p = opts[:project]
230
229
  fail ArgumentError, 'No :project specified' if p.nil?
231
230
 
@@ -236,8 +235,7 @@ module GoodData
236
235
  URI.join(u.to_s.chomp(u.path.to_s), '/project-uploads/', "#{project.pid}/")
237
236
  end
238
237
 
239
- # FIXME: Invstigate _file argument
240
- def get_user_webdav_path(_file, opts = { :project => GoodData.project })
238
+ def user_webdav_path(opts = { :project => GoodData.project })
241
239
  p = opts[:project]
242
240
  fail ArgumentError, 'No :project specified' if p.nil?
243
241
 
@@ -12,6 +12,7 @@ module GoodData
12
12
  DEFAULT_URL = 'https://secure.gooddata.com'
13
13
  LOGIN_PATH = '/gdc/account/login'
14
14
  TOKEN_PATH = '/gdc/account/token'
15
+ KEYS_TO_SCRUB = [:password, :verifyPassword, :authorizationToken]
15
16
 
16
17
  DEFAULT_HEADERS = {
17
18
  :content_type => :json,
@@ -258,7 +259,7 @@ module GoodData
258
259
  # @param uri [String] Target URI
259
260
  def put(uri, data, options = {})
260
261
  payload = data.is_a?(Hash) ? data.to_json : data
261
- GoodData.logger.debug "PUT: #{@server.url}#{uri}, #{scrub_params(data, [:password, :login, :authorizationToken])}"
262
+ GoodData.logger.debug "PUT: #{@server.url}#{uri}, #{scrub_params(data, KEYS_TO_SCRUB)}"
262
263
  profile "PUT #{uri}" do
263
264
  b = proc { @server[uri].put payload, cookies }
264
265
  process_response(options, &b)
@@ -269,7 +270,7 @@ module GoodData
269
270
  #
270
271
  # @param uri [String] Target URI
271
272
  def post(uri, data, options = {})
272
- GoodData.logger.debug "POST: #{@server.url}#{uri}, #{scrub_params(data, [:password, :login, :authorizationToken])}"
273
+ GoodData.logger.debug "POST: #{@server.url}#{uri}, #{scrub_params(data, KEYS_TO_SCRUB)}"
273
274
  profile "POST #{uri}" do
274
275
  payload = data.is_a?(Hash) ? data.to_json : data
275
276
  b = proc { @server[uri].post payload, cookies }
@@ -2,7 +2,7 @@
2
2
 
3
3
  # GoodData Module
4
4
  module GoodData
5
- VERSION = '0.6.15'
5
+ VERSION = '0.6.16'
6
6
 
7
7
  class << self
8
8
  # Version
@@ -16,7 +16,7 @@ module ProjectHelper
16
16
  GoodData::Project[PROJECT_ID, opts]
17
17
  end
18
18
 
19
- def self.delete_old_projects(opts = {:client => GoodData.connection})
19
+ def self.delete_old_projects(opts = { :client => GoodData.connection })
20
20
  projects = opts[:client].projects
21
21
  projects.each do |project|
22
22
  next if project.json['project']['meta']['author'] != client.user.uri
@@ -52,15 +52,15 @@ describe GoodData::Project, :constraint => 'slow' do
52
52
  end
53
53
  @domain.create_users(users.map {|u| u[:user]})
54
54
  res = @project.add_users(users, domain: @domain)
55
- links = res.map {|i| i[:result]['projectUsersUpdateResult']['successful'].first}
55
+ links = res.map {|i| i[:uri]}
56
56
  expect(@project.members?(links).all?).to be_truthy
57
- # users.map { |r| r[:user] }.each { |u| u.delete }
58
57
  end
59
58
  end
60
59
 
61
60
  describe '#import_users' do
62
61
  it "Updates user's name and surname and removes the users" do
63
62
  users = (1..2).to_a.map { |x| ProjectHelper.create_random_user(@client) }
63
+ @domain.create_users(users)
64
64
  @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
65
65
  expect(@domain.members?(users)).to be_truthy
66
66
  expect(@project.members?(users)).to be_truthy
@@ -70,6 +70,7 @@ describe GoodData::Project, :constraint => 'slow' do
70
70
  bill.first_name = 'buffalo'
71
71
  bill.last_name = 'bill'
72
72
  # import
73
+ @domain.create_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
73
74
  @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
74
75
  # it should be updated
75
76
  bill_changed = @domain.get_user(bill)
@@ -88,16 +89,19 @@ describe GoodData::Project, :constraint => 'slow' do
88
89
  # Add additional user while changing Buffalos surname and role.
89
90
  bill.last_name = 'Billie'
90
91
  other_guy = ProjectHelper.create_random_user(@client)
92
+ additional_batch = [bill, other_guy]
93
+
94
+ @domain.create_users(additional_batch, domain: @domain)
95
+ @project.import_users(additional_batch.map { |u| {user: u, role: u.role} }, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
91
96
 
92
- additional_batch = [bill, other_guy].map { |u| {user: u, role: u.role} }
93
- @project.import_users(additional_batch, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
94
97
  expect(@project.members.count).to eq 3
95
98
  expect(@project.member?(bill)).to be_truthy
96
- expect(@project.members?(users - additional_batch.map {|x| x[:user]}).any?).to be_falsey
99
+ expect(@project.members?(users - additional_batch).any?).to be_falsey
97
100
  end
98
101
 
99
102
  it "Updates user's role in a project" do
100
103
  users = (1..5).to_a.map { |x| ProjectHelper.create_random_user(@client).to_hash }
104
+ @domain.create_users(users, domain: @domain)
101
105
  @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
102
106
 
103
107
  expect(@project.members?(users)).to be_truthy
@@ -115,6 +119,7 @@ describe GoodData::Project, :constraint => 'slow' do
115
119
  uh[:role] = 'editor'
116
120
 
117
121
  users = (1..5).to_a.map { |x| ProjectHelper.create_random_user(@client).to_hash } + [uh]
122
+ @domain.create_users(users, domain: @domain)
118
123
  expect(@project.member?(u)).to be_truthy
119
124
  expect(u.role.title).to eq 'Admin'
120
125
  @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
@@ -15,9 +15,9 @@ describe GoodData do
15
15
  @client.disconnect
16
16
  end
17
17
 
18
- describe '#get_project_webdav_path' do
18
+ describe '#project_webdav_path' do
19
19
  it 'Returns path' do
20
- @client.get_project_webdav_path('test-file.csv', :project => @project)
20
+ @client.project_webdav_path(:project => @project)
21
21
  end
22
22
  end
23
23
 
@@ -201,9 +201,9 @@ describe GoodData do
201
201
  end
202
202
 
203
203
 
204
- describe '#get_user_webdav_path' do
204
+ describe '#user_webdav_path' do
205
205
  it 'Gets the path' do
206
- @client.get_user_webdav_path('test.csv', :project => @project)
206
+ @client.user_webdav_path(:project => @project)
207
207
  end
208
208
  end
209
209
  end
@@ -27,6 +27,7 @@ describe "User filters implementation", :constraint => 'slow' do
27
27
  GoodData::Model.upload_data(devs_data, blueprint, 'devs', :client => @client, :project => @project)
28
28
  # blueprint.find_dataset('devs').upload(devs_data)
29
29
  end
30
+
30
31
  end
31
32
 
32
33
  after(:all) do
@@ -84,7 +85,7 @@ describe "User filters implementation", :constraint => 'slow' do
84
85
  expect(@project.data_permissions.first.pretty_expression).to eq "[Dev] IN ([tomas@gooddata.com])"
85
86
  end
86
87
 
87
- it "should fail when asked to set a value not in the proejct" do
88
+ it "should fail when asked to set a value not in the project" do
88
89
  filters = [
89
90
  [ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'tomas@gooddata.com'],
90
91
  [ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com']]
@@ -48,7 +48,7 @@ describe GoodData::Metric do
48
48
  {'content' =>
49
49
  {'format' => '#,##0',
50
50
  'expression' =>
51
- "SELECT SUM([#{USED_METRIC.uri})"},
51
+ "SELECT SUM([#{USED_METRIC.uri}])"},
52
52
  'meta' =>
53
53
  {'author' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
54
54
  'uri' => '/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/252',
@@ -69,27 +69,27 @@ describe GoodData::Metric do
69
69
 
70
70
  describe '#contain?' do
71
71
  it 'should say it contains a depending metric if it does' do
72
- @instance.contain?(USED_METRIC).should == true
72
+ expect(@instance.contain?(USED_METRIC)).to eq true
73
73
  end
74
74
 
75
75
  it 'should say it contains a depending object which is given as a string if it does' do
76
- @instance.contain?(USED_METRIC).should == true
76
+ expect(@instance.contain?(USED_METRIC)).to eq true
77
77
  end
78
78
 
79
79
  it 'should be able to replace an object if the object is used in the expression' do
80
- pending('resolve mutating constant if I init from it')
80
+ skip('resolve mutating constant if I init from it')
81
81
  end
82
82
 
83
83
  it 'should be able to return an expression of the metric' do
84
- @instance.expression.should == "SELECT SUM([#{USED_METRIC.uri})"
84
+ expect(@instance.expression).to eq "SELECT SUM([#{USED_METRIC.uri}])"
85
85
  end
86
86
 
87
87
  it 'should be able to replace an object if the object is used in the expression' do
88
- @instance.contain?(USED_METRIC).should == true
89
- @instance.contain?(UNUSED_METRIC).should == false
88
+ expect(@instance.contain?(USED_METRIC)).to be_truthy
89
+ expect(@instance.contain?(UNUSED_METRIC)).to be_falsey
90
90
  @instance.replace(USED_METRIC, UNUSED_METRIC)
91
- @instance.contain?(USED_METRIC).should == false
92
- @instance.contain?(UNUSED_METRIC).should == true
91
+ expect(@instance.contain?(USED_METRIC)).to be_falsey
92
+ expect(@instance.contain?(UNUSED_METRIC)).to be_truthy
93
93
  end
94
94
  end
95
95
 
@@ -1,6 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require 'pmap'
4
3
  require 'gooddata'
5
4
 
6
5
  describe GoodData::Project, :constraint => 'slow' do
@@ -146,19 +145,6 @@ describe GoodData::Project, :constraint => 'slow' do
146
145
  end
147
146
  end
148
147
 
149
- # describe '#processes' do
150
- # it 'Returns the processes' do
151
- # @project.deploy_process('./spec/data/ruby_process',
152
- # type: 'RUBY',
153
- # name: 'Test ETL Process')
154
- # processes = @project.processes
155
- # expect(processes).to be_a_kind_of(Array)
156
- # binding.pry
157
- # expect(processes.count).to eq 1
158
- # expect(processes.map(&:project).uniq).to eq [@project]
159
- # end
160
- # end
161
-
162
148
  describe '#roles' do
163
149
  it 'Returns array of GoodData::ProjectRole' do
164
150
  roles = @project.roles
@@ -169,262 +155,4 @@ describe GoodData::Project, :constraint => 'slow' do
169
155
  end
170
156
  end
171
157
  end
172
-
173
- # describe '#users' do
174
- # it 'Returns array of GoodData::Users' do
175
- #
176
- # invitations = @project.invitations
177
- # expect(invitations).to_not be_nil
178
- # expect(invitations).to be_instance_of(Array)
179
- #
180
- # users = @project.users
181
- # expect(users).to be_instance_of(Array)
182
- #
183
- # users.each do |user|
184
- # expect(user).to be_instance_of(GoodData::Membership)
185
- #
186
- # roles = user.roles
187
- # expect(roles).to_not be_nil
188
- # expect(roles).to be_instance_of(Array)
189
- #
190
- # roles.each do |role|
191
- # expect(role).to be_instance_of(GoodData::ProjectRole)
192
- # end
193
- #
194
- # permissions = user.permissions
195
- # expect(permissions).to_not be_nil
196
- # expect(permissions).to_not be_nil
197
- # expect(permissions).to be_instance_of(Hash)
198
- #
199
- # # invitations = user.invitations
200
- # # invitations.should_not be_nil
201
- #
202
- # if (user.email == 'tomas.korcak@gooddata.com')
203
- # projects = user.projects
204
- # expect(projects).to_not be_nil
205
- # expect(projects).to be_instance_of(Array)
206
- #
207
- # projects.each do |project|
208
- # expect(project).to be_instance_of(GoodData::Project)
209
- # end
210
- # end
211
- # end
212
- # end
213
- # end
214
- #
215
- # describe '#add_user' do
216
- # it 'Adding user without domain should fail if it is not in the project' do
217
- # user = ProjectHelper.create_random_user(@client)
218
- # expect do
219
- # @project.add_user(user, 'Admin')
220
- # end.to raise_exception(ArgumentError)
221
- # end
222
- #
223
- # it 'Adding user with domain should be added to a project' do
224
- # user = ProjectHelper.create_random_user(@client)
225
- # @domain.create_users([user])
226
- # res = @project.add_user(user, 'Admin', domain: @domain)
227
- # expect(@project.member?(res['projectUsersUpdateResult']['successful'].first)).to be_truthy
228
- # end
229
- # end
230
- #
231
- # describe '#add_users' do
232
- # it 'Adding user without domain should fail if it is not in the project' do
233
- # users = (1..5).to_a.map do |x|
234
- # {
235
- # user: ProjectHelper.create_random_user(@client),
236
- # role: 'Admin'
237
- # }
238
- # end
239
- # res = @project.add_users(users)
240
- # expect(res.all? { |x| x[:type] == :error }).to eq true
241
- # end
242
- #
243
- # it 'Adding users with domain should pass and users should be added to domain' do
244
- # users = (1..5).to_a.map do |x|
245
- # {
246
- # user: ProjectHelper.create_random_user(@client),
247
- # role: 'Admin'
248
- # }
249
- # end
250
- # @domain.create_users(users.map {|u| u[:user]})
251
- # res = @project.add_users(users, domain: @domain)
252
- # links = res.map {|i| i[:result]['projectUsersUpdateResult']['successful'].first}
253
- # expect(@project.members?(links).all?).to be_truthy
254
- # # users.map { |r| r[:user] }.each { |u| u.delete }
255
- # end
256
- # end
257
- #
258
- # describe '#import_users' do
259
- # it "Updates user's name and surname and removes the users" do
260
- # users = (1..2).to_a.map { |x| ProjectHelper.create_random_user(@client) }
261
- # @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
262
- # expect(@domain.members?(users)).to be_truthy
263
- # expect(@project.members?(users)).to be_truthy
264
- # expect(@project.members.count).to eq 3
265
- # # update some user stuff
266
- # bill = users[0]
267
- # bill.first_name = 'buffalo'
268
- # bill.last_name = 'bill'
269
- # # import
270
- # @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
271
- # # it should be updated
272
- # bill_changed = @domain.get_user(bill)
273
- # expect(bill_changed.first_name).to eql('buffalo')
274
- # expect(bill_changed.last_name).to eql('bill')
275
- # expect(@project.members?(users)).to be_truthy
276
- # expect(@project.members.count).to eq 3
277
- # expect(@project.member?(bill_changed)).to be_truthy
278
- #
279
- # # remove everybody but buffalo bill.
280
- # @project.import_users([bill], domain: @domain, whitelists: [/gem_tester@gooddata.com/])
281
- # expect(@project.members.count).to eq 2
282
- # expect(@project.member?(bill)).to be_truthy
283
- # expect(@project.members?(users - [bill]).any?).to be_falsey
284
- #
285
- # # Add additional user while changing Buffalos surname and role.
286
- # bill.last_name = 'Billie'
287
- # other_guy = ProjectHelper.create_random_user(@client)
288
- #
289
- # additional_batch = [bill, other_guy].map { |u| {user: u, role: u.role} }
290
- # @project.import_users(additional_batch, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
291
- # expect(@project.members.count).to eq 3
292
- # expect(@project.member?(bill)).to be_truthy
293
- # expect(@project.members?(users - additional_batch.map {|x| x[:user]}).any?).to be_falsey
294
- # end
295
- #
296
- # it "Updates user's role in a project" do
297
- # users = (1..5).to_a.map { |x| ProjectHelper.create_random_user(@client).to_hash }
298
- # @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
299
- #
300
- # expect(@project.members?(users)).to be_truthy
301
- # user_role_changed = users[1]
302
- # users_unchanged = users - [user_role_changed]
303
- # new_role = users[1][:role] = users[1][:role] == "admin" ? "editor" : "admin"
304
- # @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
305
- # expect(@project.get_user(user_role_changed).role.identifier).to eql("#{new_role}Role")
306
- # expect(users_unchanged.map {|u| @project.get_user(u)}.map(&:role).map(&:title).uniq).to eq ['Editor']
307
- # end
308
- #
309
- # it "ignores user from both project and end state batch when whitelisted" do
310
- # u = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
311
- # uh = u.to_hash
312
- # uh[:role] = 'editor'
313
- #
314
- # users = (1..5).to_a.map { |x| ProjectHelper.create_random_user(@client).to_hash } + [uh]
315
- # expect(@project.member?(u)).to be_truthy
316
- # expect(u.role.title).to eq 'Admin'
317
- # @project.import_users(users, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
318
- # expect(@project.member?(u)).to be_truthy
319
- # expect(@project.members?(users).all?).to be_truthy
320
- # expect(@project.get_user(ConnectionHelper::DEFAULT_USERNAME).role.title).to eq 'Admin'
321
- # end
322
- #
323
- # end
324
- #
325
- # describe '#set_user_roles' do
326
- # it 'Properly updates user roles as needed' do
327
- # users_to_import = @domain.users.sample(5).map {|u| { user: u, role: 'admin' }}
328
- # @project.import_users(users_to_import, domain: @domain, whitelists: [/gem_tester@gooddata.com/])
329
- # users_without_owner = @project.users.reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }.pselect { |u| u.role.title == 'Admin' }
330
- #
331
- # user_to_change = users_without_owner.sample
332
- # @project.set_user_roles(user_to_change, 'editor')
333
- # expect(user_to_change.role.title).to eq 'Editor'
334
- # @project.set_user_roles(user_to_change, 'admin')
335
- # expect(user_to_change.role.title).to eq 'Admin'
336
- #
337
- # # Try different notation
338
- # @project.set_users_roles([user: user_to_change, role: 'editor'])
339
- # expect(user_to_change.role.title).to eq 'Editor'
340
- # @project.set_users_roles([user: user_to_change, role: 'admin'])
341
- # expect(user_to_change.role.title).to eq 'Admin'
342
- # end
343
- #
344
- # it 'Properly updates user roles when user specified by email and :roles specified as array of string with role names' do
345
- # # pick non deleted users that are not owner and have other roles than admin or editor
346
- # users = @project.users
347
- # users_without_owner = users
348
- # .reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }
349
- # .reject { |u| u.login =~ /^deleted/ }
350
- # .pselect { |u| u.role.title =~ /^(Admin|Editor)/ }
351
- #
352
- # # take 10 users that we will exercise
353
- # users_to_change = users_without_owner.sample(10)
354
- #
355
- # # alternate roles and prepare structure
356
- # logins = users_to_change.map(&:login)
357
- # roles = users_to_change.map { |u| u.role.title == 'Admin' ? ['Editor'] : ['Admin'] }
358
- #
359
- # list = users_to_change.map do |u|
360
- # {
361
- # :user => u.login,
362
- # :roles => u.role.title == 'Admin' ? ['Editor'] : ['Admin']
363
- # }
364
- # end
365
- #
366
- # # set the roles
367
- # res = @project.set_users_roles(list)
368
- # expect(res.length).to equal(list.length)
369
- # expect(logins.map {|l| users.find {|u| u.login == l}}.pmap {|u| u.role.title}).to eq roles.flatten
370
- # end
371
- #
372
- # it 'Properly updates user roles when user specified by email and :roles specified as string with role name' do
373
- # users = @project.users
374
- # users_without_owner = users
375
- # .reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }
376
- # .reject(&:deleted?)
377
- # .pselect { |u| u.role.title =~ /^(Admin|Editor)/ }
378
- #
379
- # users_to_change = users_without_owner.sample(10)
380
- #
381
- # logins = users_to_change.map(&:login)
382
- # roles = users_to_change.map { |u| u.role.title == 'Admin' ? 'Editor' : 'Admin' }
383
- #
384
- # list = users_to_change.map do |u|
385
- # {
386
- # :user => u.login,
387
- # :roles => u.role.title == 'Admin' ? 'Editor' : 'Admin'
388
- # }
389
- # end
390
- #
391
- # res = @project.set_users_roles(list)
392
- # expect(res.length).to equal(list.length)
393
- # expect(logins.map {|l| users.find {|u| u.login == l}}.pmap {|u| u.role.title}).to eq roles.flatten
394
- #
395
- # end
396
- # end
397
- #
398
- # describe '#summary' do
399
- # it 'Properly gets summary of project' do
400
- # res = @project.summary
401
- # expect(res).to include(ProjectHelper::PROJECT_SUMMARY)
402
- # end
403
- # end
404
- #
405
- # describe '#title' do
406
- # it 'Properly gets title of project' do
407
- # res = @project.title
408
- # expect(res).to include(ProjectHelper::PROJECT_TITLE)
409
- # end
410
- # end
411
- #
412
- # describe 'enabling and disabling users' do
413
- # it 'should be able to enable and disable a user' do
414
- # users_without_owner = @project.users
415
- # .reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }
416
- # .reject(&:deleted?)
417
- # .select(&:enabled?)
418
- # user = users_without_owner.sample
419
- # expect(user.enabled?).to be_truthy
420
- # expect(user.disabled?).to be_falsey
421
- # user.disable
422
- # expect(user.disabled?).to be_truthy
423
- # expect(user.enabled?).to be_falsey
424
- # user.enable
425
- # expect(user.enabled?).to be_truthy
426
- # expect(user.disabled?).to be_falsey
427
- # expect(user.project).not_to be_nil
428
- # end
429
- # end
430
158
  end