Birst_Command 0.5.0 → 0.6.0
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 +4 -4
- data/.rspec +2 -0
- data/Birst_Command.gemspec +4 -3
- data/CHANGELOG.md +23 -0
- data/Gemfile +7 -3
- data/Gemfile.lock +65 -0
- data/README.md +34 -23
- data/Rakefile +0 -13
- data/bin/birstcl +5 -12
- data/lib/birst_command.rb +3 -1
- data/lib/birst_command/core_additions.rb +8 -0
- data/lib/birst_command/session.rb +110 -47
- data/lib/birst_command/settings.rb +26 -0
- data/lib/birst_command/version.rb +1 -1
- data/spec/bc_spec_fixtures.rb +70 -0
- data/spec/birst_command_spec.rb +13 -0
- data/spec/cookie_spec.rb +74 -0
- data/spec/sample_settings.yaml +9 -0
- data/spec/session_spec.rb +101 -0
- data/spec/session_spec_helper.rb +10 -0
- data/spec/settings_spec.rb +19 -0
- metadata +37 -30
- data/config.json_template +0 -6
- data/lib/birst_command/config.rb +0 -28
- data/test/.gitignore +0 -1
- data/test/config_test.json_template +0 -8
- data/test/standard/resources/config_test.json +0 -4
- data/test/standard/test_add_user_to_space.rb +0 -49
- data/test/standard/test_command_helper.rb +0 -44
- data/test/standard/test_cookie.rb +0 -61
- data/test/standard/test_copy_space.rb +0 -55
- data/test/standard/test_list_spaces.rb +0 -24
- data/test/standard/test_login.rb +0 -23
- data/test/standard/test_password.rb +0 -21
- data/test/standard/test_read_config.rb +0 -18
- data/test/test_birst_command.rb +0 -10
data/config.json_template
DELETED
data/lib/birst_command/config.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
module Birst_Command
|
2
|
-
require 'erb'
|
3
|
-
module Config
|
4
|
-
extend self
|
5
|
-
|
6
|
-
attr_accessor :config_full_path
|
7
|
-
@config_full_path = File.join(File.dirname(__FILE__),"../../config.json")
|
8
|
-
|
9
|
-
attr_accessor :options
|
10
|
-
@options = {
|
11
|
-
:soap_log_level => :error,
|
12
|
-
:soap_log => false
|
13
|
-
}
|
14
|
-
|
15
|
-
def read_config(config_full_path = @config_full_path)
|
16
|
-
parse_erb = ERB.new(IO.read(config_full_path)).result(binding)
|
17
|
-
parse_json = JSON.parse(parse_erb, :symbolize_names => true)
|
18
|
-
@options = @options.merge!(parse_json)
|
19
|
-
end
|
20
|
-
|
21
|
-
def set_debug
|
22
|
-
@options = @options.merge!({
|
23
|
-
:soap_log_level => :debug,
|
24
|
-
:soap_log => true
|
25
|
-
})
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
data/test/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
/config_test.json
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_add_user_to_space < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
Birst_Command::Config.read_config
|
7
|
-
Birst_Command::Config.read_config(File.join(File.dirname(__FILE__),"../config_test.json"))
|
8
|
-
@test_options = Birst_Command::Config.options[:test][:test_add_user_to_space]
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def user_exists?
|
17
|
-
result = nil
|
18
|
-
Session.start do |bc|
|
19
|
-
users = bc.list_users_in_space :spaceID => @test_options[:space_id]
|
20
|
-
result = [users[:string]].flatten.include? @test_options[:username]
|
21
|
-
end
|
22
|
-
result
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
def test_add_user_to_space
|
27
|
-
Session.start do |bc|
|
28
|
-
bc.add_user_to_space :userName => @test_options[:username],
|
29
|
-
:spaceID => @test_options[:space_id],
|
30
|
-
:hasAdmin => "false"
|
31
|
-
end
|
32
|
-
|
33
|
-
assert user_exists?, "User #{@test_options[:username]} not added!"
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
def test_remove_user_from_space
|
38
|
-
test_add_user_to_space if !user_exists?
|
39
|
-
|
40
|
-
Session.start do |bc|
|
41
|
-
bc.remove_user_from_space :userName => @test_options[:username],
|
42
|
-
:spaceID => @test_options[:space_id]
|
43
|
-
end
|
44
|
-
|
45
|
-
assert !user_exists?, "User #{@test_options[:username]} should no longer exist!"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_command_helper < Test::Unit::TestCase
|
4
|
-
|
5
|
-
# Decided that commands should return whatever the Birst API returns.
|
6
|
-
# However, for user code, it would be helpful to customize returns for
|
7
|
-
# specific use cases
|
8
|
-
|
9
|
-
class Session < Birst_Command::Session
|
10
|
-
def list_spaces(*args)
|
11
|
-
result = command __method__, *args
|
12
|
-
[result[:user_space]].flatten
|
13
|
-
end
|
14
|
-
def list_users_in_space(*args)
|
15
|
-
result = command __method__, *args
|
16
|
-
[result[:string]].flatten
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def setup
|
22
|
-
Birst_Command::Config.read_config
|
23
|
-
Birst_Command::Config.read_config(File.join(File.dirname(__FILE__),"../config_test.json"))
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_add_user_to_space
|
30
|
-
test_options = Birst_Command::Config.options[:test][:test_add_user_to_space]
|
31
|
-
|
32
|
-
spaces = nil
|
33
|
-
users = nil
|
34
|
-
Session.start do |bc|
|
35
|
-
spaces = bc.list_spaces
|
36
|
-
users = bc.list_users_in_space :spaceID => test_options[:space_id]
|
37
|
-
end
|
38
|
-
|
39
|
-
assert spaces.is_a?(Array), "list_spaces helper did not return an array"
|
40
|
-
assert !spaces[0].has_key?(:user_space), "list_spaces helper should not give :user_space"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_cookie < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
Birst_Command::Config.read_config
|
7
|
-
Birst_Command::Config.read_config(File.join(File.dirname(__FILE__),"../config_test.json"))
|
8
|
-
@new_space_id = nil
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
Session.start do |bc|
|
13
|
-
bc.delete_space :spaceId => @new_space_id
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_cookie_using_a_copy_command
|
18
|
-
test_options = Birst_Command::Config.options[:test][:test_copy_space]
|
19
|
-
|
20
|
-
session_cookie = nil
|
21
|
-
job_token = nil
|
22
|
-
Session.start do |bc|
|
23
|
-
@new_space_id = bc.create_new_space :spaceName => "test_copy_space",
|
24
|
-
:comments => "",
|
25
|
-
:automatic => "false"
|
26
|
-
|
27
|
-
puts "#{JSON.pretty_generate bc.list_spaces}"
|
28
|
-
job_token = bc.copy_space :spFromID => test_options[:from_space_id],
|
29
|
-
:spToID => @new_space_id,
|
30
|
-
:mode => "copy",
|
31
|
-
:options => "data;settings-permissions;settings-membership;repository;birst-connect;custom-subject-areas;dashboardstyles;salesforce;catalog;CustomGeoMaps.xml;spacesettings.xml;SavedExpressions.xml;DrillMaps.xml;connectors;datastore-aggregates;settings-basic"
|
32
|
-
|
33
|
-
session_cookie = bc.auth_cookies
|
34
|
-
end
|
35
|
-
|
36
|
-
puts "COOKIE COOKIE: #{session_cookie}"
|
37
|
-
|
38
|
-
i = 0
|
39
|
-
loop do
|
40
|
-
i += 1
|
41
|
-
if i < 60
|
42
|
-
is_job_complete = false
|
43
|
-
Session.start use_cookie: session_cookie do |bc|
|
44
|
-
is_job_complete = bc.is_job_complete :jobToken => job_token
|
45
|
-
end
|
46
|
-
puts "COMPLETE? #{is_job_complete}"
|
47
|
-
|
48
|
-
sleep 1
|
49
|
-
break if is_job_complete
|
50
|
-
else
|
51
|
-
raise "Copy job timed out"
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
# This test sucks, but it will fail if the cookies don't work
|
58
|
-
assert_equal 36, @new_space_id.length, "Got an invalid space id #{@new_space_id}"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_copy_space < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
Birst_Command::Config.read_config
|
7
|
-
Birst_Command::Config.read_config(File.join(File.dirname(__FILE__),"../config_test.json"))
|
8
|
-
@new_space_id = nil
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
Session.start do |bc|
|
13
|
-
bc.delete_space :spaceId => @new_space_id
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_copy_space
|
18
|
-
test_options = Birst_Command::Config.options[:test][:test_copy_space]
|
19
|
-
|
20
|
-
Session.start do |bc|
|
21
|
-
@new_space_id = bc.create_new_space :spaceName => "test_copy_space",
|
22
|
-
:comments => "",
|
23
|
-
:automatic => "false"
|
24
|
-
|
25
|
-
puts "#{JSON.pretty_generate bc.list_spaces}"
|
26
|
-
job_token = bc.copy_space :spFromID => test_options[:from_space_id],
|
27
|
-
:spToID => @new_space_id,
|
28
|
-
:mode => "copy",
|
29
|
-
:options => "data;settings-permissions;settings-membership;repository;birst-connect;custom-subject-areas;dashboardstyles;salesforce;catalog;CustomGeoMaps.xml;spacesettings.xml;SavedExpressions.xml;DrillMaps.xml;connectors;datastore-aggregates;settings-basic"
|
30
|
-
|
31
|
-
|
32
|
-
i = 0
|
33
|
-
loop do
|
34
|
-
i += 1
|
35
|
-
if i < 60
|
36
|
-
status = bc.get_job_status :jobToken => job_token
|
37
|
-
puts "#{JSON.pretty_generate status}"
|
38
|
-
|
39
|
-
is_job_complete = bc.is_job_complete :jobToken => job_token
|
40
|
-
puts "COMPLETE? #{is_job_complete}"
|
41
|
-
sleep 1
|
42
|
-
|
43
|
-
break if is_job_complete
|
44
|
-
else
|
45
|
-
raise "Copy job timed out"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
assert_equal 36, @new_space_id.length, "Got an invalid space id #{@new_space_id}"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_list_spaces < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
Birst_Command::Config.read_config
|
7
|
-
end
|
8
|
-
|
9
|
-
def teardown
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_list_spaces
|
13
|
-
spaces = nil
|
14
|
-
Session.start do |bc|
|
15
|
-
unclean_spaces = bc.list_spaces
|
16
|
-
spaces = [unclean_spaces[:user_space]].flatten
|
17
|
-
end
|
18
|
-
|
19
|
-
assert spaces.is_a?(Array), "Expecting spaces to be an array"
|
20
|
-
assert spaces[0].is_a?(Hash), "Expecting spaces to be an array of hashes"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
|
data/test/standard/test_login.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_login < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
Birst_Command::Config.read_config
|
7
|
-
end
|
8
|
-
|
9
|
-
def teardown
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_login
|
13
|
-
token = ""
|
14
|
-
Session.start do |bc|
|
15
|
-
token = bc.token
|
16
|
-
end
|
17
|
-
|
18
|
-
assert_equal 32, token.length, "Got an invalid token #{token}"
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_password < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
ENV['ENVCRYPT_KEY'] = '9Aqck/FZ0pCRkiw95VpxLw==$kxnYLOCo9qHDHHaTZM+fN73WVclDkRqO+uxSgzFzrpQ=$qoEtCm1BQWgc+WAxpotsrw=='
|
7
|
-
|
8
|
-
@password = "mysecretpass"
|
9
|
-
@encrypted = "MBTkxkMT8AbQupkOwtG9uQ=="
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_decrypt
|
16
|
-
crypt = Envcrypt::Envcrypter.new
|
17
|
-
assert_equal @password, crypt.decrypt(@encrypted), "Wrong decrypted password"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require "test_birst_command"
|
2
|
-
|
3
|
-
class Test_read_config < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
end
|
7
|
-
|
8
|
-
def teardown
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_read_config
|
12
|
-
Birst_Command::Config.read_config(File.join(File.dirname(__FILE__),"resources/config_test.json"))
|
13
|
-
assert_equal "name@myplace.com", Birst_Command::Config.options[:username], "Error with config file"
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
|