gooddata 0.6.0 → 0.6.2

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.
Files changed (208) hide show
  1. checksums.yaml +13 -5
  2. data/.rubocop.yml +23 -0
  3. data/.travis.yml +9 -4
  4. data/CLI.md +439 -0
  5. data/Gemfile +0 -1
  6. data/README.md +2 -2
  7. data/Rakefile +60 -8
  8. data/doc/templates/default/module/setup.rb +1 -1
  9. data/examples.rb +2 -0
  10. data/gooddata +2 -0
  11. data/gooddata.gemspec +12 -8
  12. data/lib/gooddata.rb +0 -2
  13. data/lib/gooddata/bricks/base_downloader.rb +52 -47
  14. data/lib/gooddata/bricks/brick.rb +20 -31
  15. data/lib/gooddata/bricks/bricks.rb +1 -1
  16. data/lib/gooddata/bricks/middleware/base_middleware.rb +9 -7
  17. data/lib/gooddata/bricks/middleware/bench_middleware.rb +12 -10
  18. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +28 -28
  19. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +20 -16
  20. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +21 -19
  21. data/lib/gooddata/bricks/middleware/logger_middleware.rb +10 -8
  22. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +36 -34
  23. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +11 -9
  24. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +14 -12
  25. data/lib/gooddata/bricks/pipeline.rb +28 -0
  26. data/lib/gooddata/bricks/utils.rb +10 -8
  27. data/lib/gooddata/cli/cli.rb +1 -6
  28. data/lib/gooddata/cli/commands/auth_cmd.rb +1 -1
  29. data/lib/gooddata/cli/commands/console_cmd.rb +7 -5
  30. data/lib/gooddata/cli/commands/domain_cmd.rb +45 -0
  31. data/lib/gooddata/cli/commands/process_cmd.rb +42 -5
  32. data/lib/gooddata/cli/commands/project_cmd.rb +96 -36
  33. data/lib/gooddata/cli/commands/projects_cmd.rb +21 -0
  34. data/lib/gooddata/cli/commands/role_cmd.rb +28 -0
  35. data/lib/gooddata/cli/commands/run_ruby_cmd.rb +5 -5
  36. data/lib/gooddata/cli/commands/scaffold_cmd.rb +1 -1
  37. data/lib/gooddata/cli/commands/{profile_cmd.rb → user_cmd.rb} +7 -9
  38. data/lib/gooddata/cli/shared.rb +3 -2
  39. data/lib/gooddata/client.rb +16 -304
  40. data/lib/gooddata/commands/api.rb +13 -5
  41. data/lib/gooddata/commands/auth.rb +47 -40
  42. data/lib/gooddata/commands/base.rb +4 -2
  43. data/lib/gooddata/commands/commands.rb +1 -1
  44. data/lib/gooddata/commands/datasets.rb +20 -7
  45. data/lib/gooddata/commands/domain.rb +23 -0
  46. data/lib/gooddata/commands/process.rb +23 -117
  47. data/lib/gooddata/commands/project.rb +147 -0
  48. data/lib/gooddata/commands/projects.rb +8 -102
  49. data/lib/gooddata/commands/role.rb +26 -0
  50. data/lib/gooddata/commands/runners.rb +41 -38
  51. data/lib/gooddata/commands/scaffold.rb +46 -43
  52. data/lib/gooddata/commands/user.rb +33 -0
  53. data/lib/gooddata/connection.rb +43 -353
  54. data/lib/gooddata/core/connection.rb +389 -0
  55. data/lib/gooddata/core/core.rb +5 -4
  56. data/lib/gooddata/core/logging.rb +48 -0
  57. data/lib/gooddata/core/nil_logger.rb +13 -0
  58. data/lib/gooddata/core/project.rb +70 -0
  59. data/lib/gooddata/core/rest.rb +120 -0
  60. data/lib/gooddata/core/threaded.rb +14 -0
  61. data/lib/gooddata/core/user.rb +19 -0
  62. data/lib/gooddata/data/data.rb +2 -1
  63. data/lib/gooddata/data/guesser.rb +16 -12
  64. data/lib/gooddata/exceptions/command_failed.rb +1 -1
  65. data/lib/gooddata/exceptions/exceptions.rb +2 -1
  66. data/lib/gooddata/exceptions/no_project_error.rb +11 -0
  67. data/lib/gooddata/exceptions/project_not_found.rb +1 -1
  68. data/lib/gooddata/extensions/big_decimal.rb +6 -2
  69. data/lib/gooddata/extract.rb +10 -8
  70. data/lib/gooddata/goodzilla/goodzilla.rb +61 -59
  71. data/lib/gooddata/helpers.rb +15 -9
  72. data/lib/gooddata/models/account_settings.rb +124 -0
  73. data/lib/gooddata/models/attributes/anchor.rb +37 -0
  74. data/lib/gooddata/models/attributes/attributes.rb +8 -0
  75. data/lib/gooddata/models/attributes/date_attribute.rb +25 -0
  76. data/lib/gooddata/models/attributes/time_attribute.rb +24 -0
  77. data/lib/gooddata/models/columns/attribute.rb +71 -0
  78. data/lib/gooddata/models/columns/columns.rb +8 -0
  79. data/lib/gooddata/models/columns/date_column.rb +63 -0
  80. data/lib/gooddata/models/columns/fact_model.rb +54 -0
  81. data/lib/gooddata/models/columns/label.rb +55 -0
  82. data/lib/gooddata/models/columns/reference.rb +57 -0
  83. data/lib/gooddata/models/dashboard_builder.rb +26 -0
  84. data/lib/gooddata/models/data_result.rb +10 -9
  85. data/lib/gooddata/models/domain.rb +131 -0
  86. data/lib/gooddata/models/empty_result.rb +5 -8
  87. data/lib/gooddata/models/facts/facts.rb +8 -0
  88. data/lib/gooddata/models/facts/time_fact.rb +20 -0
  89. data/lib/gooddata/models/folders/attribute_folder.rb +20 -0
  90. data/lib/gooddata/models/folders/fact_folder.rb +20 -0
  91. data/lib/gooddata/models/folders/folders.rb +8 -0
  92. data/lib/gooddata/models/invitation.rb +78 -0
  93. data/lib/gooddata/models/links.rb +6 -6
  94. data/lib/gooddata/models/md_object.rb +25 -0
  95. data/lib/gooddata/models/metadata.rb +160 -62
  96. data/lib/gooddata/models/metadata/attribute.rb +81 -0
  97. data/lib/gooddata/models/metadata/column.rb +61 -0
  98. data/lib/gooddata/models/{dashboard.rb → metadata/dashboard.rb} +12 -7
  99. data/lib/gooddata/models/{data_set.rb → metadata/data_set.rb} +5 -4
  100. data/lib/gooddata/models/metadata/date_dimension.rb +26 -0
  101. data/lib/gooddata/models/metadata/display_form.rb +61 -0
  102. data/lib/gooddata/models/metadata/fact.rb +36 -0
  103. data/lib/gooddata/models/metadata/folder.rb +24 -0
  104. data/lib/gooddata/models/metadata/metadata.rb +8 -0
  105. data/lib/gooddata/models/metadata/metric.rb +197 -0
  106. data/lib/gooddata/models/metadata/report.rb +115 -0
  107. data/lib/gooddata/models/{report_definition.rb → metadata/report_definition.rb} +16 -10
  108. data/lib/gooddata/models/metadata/schema.rb +227 -0
  109. data/lib/gooddata/models/model.rb +38 -1339
  110. data/lib/gooddata/models/models.rb +5 -2
  111. data/lib/gooddata/models/module_constants.rb +29 -0
  112. data/lib/gooddata/models/process.rb +142 -13
  113. data/lib/gooddata/models/profile.rb +4 -6
  114. data/lib/gooddata/models/project.rb +406 -136
  115. data/lib/gooddata/models/project_blueprint.rb +221 -0
  116. data/lib/gooddata/models/project_builder.rb +136 -0
  117. data/lib/gooddata/models/project_creator.rb +138 -0
  118. data/lib/gooddata/models/project_metadata.rb +11 -10
  119. data/lib/gooddata/models/project_role.rb +92 -0
  120. data/lib/gooddata/models/references/date_reference.rb +44 -0
  121. data/lib/gooddata/models/references/references.rb +8 -0
  122. data/lib/gooddata/models/references/time_reference.rb +13 -0
  123. data/lib/gooddata/models/report_data_result.rb +11 -11
  124. data/lib/gooddata/models/schedule.rb +284 -0
  125. data/lib/gooddata/models/schema_blueprint.rb +158 -0
  126. data/lib/gooddata/models/schema_builder.rb +81 -0
  127. data/lib/gooddata/models/tab_builder.rb +23 -0
  128. data/lib/gooddata/models/user.rb +165 -0
  129. data/lib/gooddata/version.rb +1 -1
  130. data/lib/templates/project/data/devs.csv +1 -1
  131. data/lib/templates/project/data/repos.csv +1 -1
  132. data/lib/templates/project/model/model.rb.erb +7 -11
  133. data/spec/bricks/bricks_spec.rb +2 -0
  134. data/spec/data/test-ci-data.csv +2 -0
  135. data/spec/data/test_project_model_spec.json +7 -27
  136. data/spec/helpers/blueprint_helper.rb +2 -0
  137. data/spec/helpers/cli_helper.rb +2 -0
  138. data/spec/helpers/connection_helper.rb +14 -1
  139. data/spec/helpers/project_helper.rb +16 -0
  140. data/spec/helpers/schema_helper.rb +16 -0
  141. data/spec/integration/command_projects_spec.rb +7 -7
  142. data/spec/integration/create_from_template_spec.rb +2 -2
  143. data/spec/integration/full_project_spec.rb +160 -7
  144. data/spec/integration/partial_md_export_import_spec.rb +3 -3
  145. data/spec/logging_in_logging_out_spec.rb +2 -1
  146. data/spec/spec_helper.rb +26 -4
  147. data/spec/unit/bricks/bricks_spec.rb +15 -7
  148. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +2 -0
  149. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +2 -0
  150. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +2 -0
  151. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +2 -0
  152. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +2 -0
  153. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +2 -0
  154. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +2 -0
  155. data/spec/unit/cli/cli_spec.rb +2 -0
  156. data/spec/unit/cli/commands/cmd_api_spec.rb +23 -15
  157. data/spec/unit/cli/commands/cmd_auth_spec.rb +8 -4
  158. data/spec/unit/cli/commands/cmd_domain_spec.rb +82 -0
  159. data/spec/unit/cli/commands/cmd_process_spec.rb +29 -13
  160. data/spec/unit/cli/commands/cmd_project_spec.rb +51 -30
  161. data/spec/unit/cli/commands/cmd_role_spec.rb +44 -0
  162. data/spec/unit/cli/commands/cmd_run_ruby_spec.rb +8 -4
  163. data/spec/unit/cli/commands/cmd_scaffold_spec.rb +48 -11
  164. data/spec/unit/cli/commands/cmd_user_spec.rb +29 -0
  165. data/spec/unit/commands/command_api_spec.rb +1 -1
  166. data/spec/unit/commands/command_auth_spec.rb +100 -18
  167. data/spec/unit/commands/command_dataset_spec.rb +4 -0
  168. data/spec/unit/commands/command_process_spec.rb +9 -4
  169. data/spec/unit/commands/command_projects_spec.rb +10 -6
  170. data/spec/unit/commands/command_scaffold_spec.rb +5 -1
  171. data/spec/unit/commands/command_user_spec.rb +22 -0
  172. data/spec/unit/core/connection_spec.rb +35 -6
  173. data/spec/unit/core/logging_spec.rb +65 -0
  174. data/spec/unit/core/nil_logger_spec.rb +9 -0
  175. data/spec/unit/core/project_spec.rb +51 -0
  176. data/spec/unit/core/rest_spec.rb +33 -0
  177. data/spec/unit/data/guesser_spec.rb +5 -0
  178. data/spec/unit/godzilla/goodzilla_spec.rb +2 -0
  179. data/spec/unit/models/account_settings_spec.rb +28 -0
  180. data/spec/unit/models/anchor_spec.rb +32 -0
  181. data/spec/unit/models/attribute_column_spec.rb +7 -0
  182. data/spec/unit/models/domain_spec.rb +45 -0
  183. data/spec/unit/models/invitation_spec.rb +13 -0
  184. data/spec/unit/models/md_object_spec.rb +47 -0
  185. data/spec/unit/models/metric.rb +92 -0
  186. data/spec/unit/{model → models}/model_spec.rb +9 -7
  187. data/spec/unit/models/project_blueprint_spec.rb +202 -0
  188. data/spec/unit/models/project_creator.rb +73 -0
  189. data/spec/unit/models/project_role_spec.rb +90 -0
  190. data/spec/unit/models/project_spec.rb +143 -0
  191. data/spec/unit/models/schedule_spec.rb +491 -0
  192. data/spec/unit/{model → models}/schema_builder_spec.rb +2 -0
  193. data/spec/unit/{model → models}/tools_spec.rb +13 -7
  194. data/spec/unit/models/user_spec.rb +16 -0
  195. data/test/test_upload.rb +2 -0
  196. metadata +189 -86
  197. data/lib/gooddata/commands/profile.rb +0 -11
  198. data/lib/gooddata/models/attribute.rb +0 -29
  199. data/lib/gooddata/models/display_form.rb +0 -9
  200. data/lib/gooddata/models/fact.rb +0 -19
  201. data/lib/gooddata/models/metric.rb +0 -99
  202. data/lib/gooddata/models/report.rb +0 -89
  203. data/spec/data/blueprint_valid.json +0 -37
  204. data/spec/unit/cli/commands/cmd_profile_spec.rb +0 -16
  205. data/spec/unit/commands/command_profile_spec.rb +0 -18
  206. data/spec/unit/core/core_spec.rb +0 -7
  207. data/spec/unit/model/blueprint_spec.rb +0 -132
  208. data/spec/unit/model/project_blueprint_spec.rb +0 -44
@@ -0,0 +1,44 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'gooddata/cli/cli'
4
+
5
+ describe GoodData::CLI do
6
+ describe 'role' do
7
+ it 'Complains when no parameters specified' do
8
+ args = %w(role)
9
+
10
+ out = run_cli(args)
11
+ out.should include "Command 'role' requires a subcommand list"
12
+ end
13
+
14
+ describe 'role list' do
15
+ it 'Complains when no project ID specified' do
16
+ args = %w(role list)
17
+
18
+ out = run_cli(args)
19
+ out.should include 'Project ID has to be provided'
20
+ end
21
+
22
+ it 'List roles when passing project ID' do
23
+ pending 'Investignate which project to use'
24
+
25
+ args = [
26
+ '-p',
27
+ ProjectHelper::PROJECT_ID,
28
+ 'role',
29
+ 'list',
30
+ ]
31
+
32
+ out = run_cli(args)
33
+
34
+ expected_roles = [
35
+ 'adminRole,/gdc/projects/tk6192gsnav58crp6o1ahsmtuniq8khb/roles/2'
36
+ ]
37
+
38
+ expected_roles.each do |expected_role|
39
+ out.should include expected_role
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,9 +1,13 @@
1
+ # encoding: UTF-8
2
+
1
3
  require 'gooddata/cli/cli'
2
4
 
3
- describe GoodData::CLI do
4
- it "Has working 'run_ruby' command" do
5
- args = %w(run_ruby)
5
+ describe 'GoodData::CLI - run_ruby' do
6
+ describe 'run_ruby' do
7
+ it 'Can be called without arguments' do
8
+ args = %w(run_ruby)
6
9
 
7
- run_cli(args)
10
+ run_cli(args)
11
+ end
8
12
  end
9
13
  end
@@ -1,21 +1,58 @@
1
+ require 'fileutils'
2
+
1
3
  require 'gooddata/cli/cli'
2
4
 
3
- describe GoodData::CLI do
4
- it "Has working 'scaffold' command" do
5
- args = %w(scaffold)
5
+ describe 'GoodData::CLI - scaffold' do
6
+ TEST_PROJECT_NAME = 'test-project'
7
+ TEST_BRICK_NAME = 'test-brick'
8
+
9
+ describe 'scaffold' do
10
+ it 'Complains when no subcommand specified' do
11
+ args = %w(scaffold)
6
12
 
7
- run_cli(args)
13
+ out = run_cli(args)
14
+ out.should include "Command 'scaffold' requires a subcommand project,brick"
15
+ end
8
16
  end
9
17
 
10
- it "Has working 'scaffold brick' command" do
11
- args = %w(scaffold brick)
18
+ describe 'scaffold brick' do
19
+ it 'Complains when brick name is not specified' do
20
+ args = %w(scaffold brick)
21
+
22
+ out = run_cli(args)
23
+ out.should include 'Name of the brick has to be provided'
24
+ end
25
+
26
+ it 'Scaffolds brick if the name is specified' do
27
+ args = [
28
+ 'scaffold',
29
+ 'brick',
30
+ TEST_BRICK_NAME
31
+ ]
12
32
 
13
- run_cli(args)
33
+ run_cli(args)
34
+ FileUtils.rm_rf(TEST_BRICK_NAME)
35
+ end
14
36
  end
15
37
 
16
- it "Has working 'scaffold project' command" do
17
- args = %w(scaffold project)
38
+ describe 'scaffold project' do
39
+ it 'Complains when project name is not specified' do
40
+ args = %w(scaffold project)
18
41
 
19
- run_cli(args)
42
+ out = run_cli(args)
43
+ out.should include 'Name of the project has to be provided'
44
+ end
45
+
46
+ it "Scaffolds project if the name is specified" do
47
+ args = [
48
+ 'scaffold',
49
+ 'project',
50
+ TEST_PROJECT_NAME
51
+ ]
52
+
53
+ run_cli(args)
54
+ FileUtils.rm_rf(TEST_PROJECT_NAME)
55
+ end
20
56
  end
21
- end
57
+
58
+ end
@@ -0,0 +1,29 @@
1
+ require 'gooddata/cli/cli'
2
+
3
+ describe 'GoodData::CLI - user' do
4
+ describe 'user' do
5
+ it 'Complains when no subcommand specified' do
6
+ args = %w(user)
7
+
8
+ out = run_cli(args)
9
+ out.should include "Command 'user' requires a subcommand show"
10
+ end
11
+ end
12
+
13
+ describe 'user list' do
14
+ it "Has working 'user list' command" do
15
+ args = %w(user list)
16
+
17
+ run_cli(args)
18
+ end
19
+ end
20
+
21
+ describe 'user show' do
22
+ it "Has working 'user show' command" do
23
+ args = %w(user show)
24
+
25
+ run_cli(args)
26
+ end
27
+ end
28
+
29
+ end
@@ -2,7 +2,7 @@ require 'gooddata/commands/api'
2
2
 
3
3
  describe GoodData::Command::Api do
4
4
  before(:each) do
5
- ConnectionHelper::create_default_connection
5
+ @connection = ConnectionHelper::create_default_connection
6
6
  end
7
7
 
8
8
  it "Is Possible to create GoodData::Command::Api instance" do
@@ -6,6 +6,20 @@ require 'gooddata/commands/auth'
6
6
  describe GoodData::Command::Auth do
7
7
  ORIG_TERMINAL = GoodData::CLI::DEFAULT_TERMINAL
8
8
 
9
+ DEFAULT_CREDENTIALS = {
10
+ :email => 'joedoe@example.com',
11
+ :password => 'secretPassword',
12
+ :token => 't0k3n1sk0',
13
+ }
14
+
15
+ DEFAULT_CREDENTIALS_OVER = {
16
+ :email => 'pepa@depo.com',
17
+ :password => 'lokomotiva',
18
+ :token => 'briketa',
19
+ }
20
+
21
+ DEFAULT_CREDENTIALS_TEMP_FILE_NAME = 'credentials'
22
+
9
23
  before(:all) do
10
24
  @input = StringIO.new
11
25
  @output = StringIO.new
@@ -20,7 +34,11 @@ describe GoodData::Command::Auth do
20
34
 
21
35
 
22
36
  before(:each) do
23
- ConnectionHelper::create_default_connection
37
+ @connection = ConnectionHelper::create_default_connection
38
+ end
39
+
40
+ after(:each) do
41
+ GoodData.disconnect
24
42
  end
25
43
 
26
44
  it "Is Possible to create GoodData::Command::Auth instance" do
@@ -34,40 +52,104 @@ describe GoodData::Command::Auth do
34
52
  end
35
53
  end
36
54
 
37
- describe "#ensure_credentials" do
38
- it "Ensures credentials existence" do
55
+ describe "#ask_for_credentials" do
56
+ it 'Interactively asks user for crendentials' do
39
57
  pending("Mock STDIO")
58
+ @input.string = ''
59
+ @input << DEFAULT_CREDENTIALS[:email] << "\n"
60
+ @input << DEFAULT_CREDENTIALS[:password] << "\n"
61
+ @input << DEFAULT_CREDENTIALS[:token] << "\n"
62
+ @input.rewind
63
+
64
+ GoodData::Command::Auth.ask_for_credentials
40
65
  end
41
66
  end
42
67
 
43
- describe "#ask_for_credentials" do
44
- credentials = {
45
- :email => 'joedoe@example.com',
46
- :password => 'secretPassword',
47
- :token => 't0k3n1sk0',
48
- }
68
+ describe "#read_credentials" do
69
+ it 'Reads credentials from default file if no path specified' do
70
+ GoodData::Command::Auth.read_credentials
71
+ end
49
72
 
50
- it 'Interactively asks user for crendentials' do
51
- pending("Mock STDIO")
73
+ it 'Reads credentials from file specified' do
74
+ temp_path = Tempfile.new(DEFAULT_CREDENTIALS_TEMP_FILE_NAME).path
52
75
 
53
- @input << credentials[:email] << "\n"
54
- @input << credentials[:password] << "\n"
55
- @input << credentials[:token] << "\n"
56
- @input.rewind
76
+ GoodData::Command::Auth.write_credentials(DEFAULT_CREDENTIALS, temp_path)
57
77
 
58
- GoodData::Command::Auth.ask_for_credentials
78
+ result = GoodData::Command::Auth.read_credentials(temp_path)
79
+ GoodData::Command::Auth.unstore(temp_path)
80
+
81
+ result.should == DEFAULT_CREDENTIALS
82
+ end
83
+
84
+ it 'Returns empty hash if invalid path specified' do
85
+ expect = {}
86
+ result = GoodData::Command::Auth.read_credentials('/some/invalid/path')
87
+ result.should == expect
88
+ end
89
+ end
90
+
91
+ describe "#write_credentials" do
92
+ it 'Writes credentials' do
93
+ temp_path = Tempfile.new(DEFAULT_CREDENTIALS_TEMP_FILE_NAME).path
94
+
95
+ result = GoodData::Command::Auth.write_credentials(DEFAULT_CREDENTIALS, temp_path)
96
+ GoodData::Command::Auth.unstore(temp_path)
97
+
98
+ result.should == DEFAULT_CREDENTIALS
59
99
  end
60
100
  end
61
101
 
62
102
  describe "#store" do
63
103
  it 'Stores credentials' do
64
- pending("Mock STDIO")
104
+ @input.string = ''
105
+ @input << DEFAULT_CREDENTIALS[:email] << "\n"
106
+ @input << DEFAULT_CREDENTIALS[:password] << "\n"
107
+ @input << DEFAULT_CREDENTIALS[:token] << "\n"
108
+ @input << 'y' << "\n"
109
+ @input.rewind
110
+
111
+ temp_path = Tempfile.new(DEFAULT_CREDENTIALS_TEMP_FILE_NAME).path
112
+ GoodData::Command::Auth.unstore(temp_path)
113
+ GoodData::Command::Auth.store(temp_path)
114
+ end
115
+
116
+ it 'Overwrites credentials if confirmed' do
117
+ @input.string = ''
118
+ @input << DEFAULT_CREDENTIALS[:email] << "\n"
119
+ @input << DEFAULT_CREDENTIALS[:password] << "\n"
120
+ @input << DEFAULT_CREDENTIALS[:token] << "\n"
121
+ @input << 'y' << "\n"
122
+ @input.rewind
123
+
124
+ temp_path = Tempfile.new(DEFAULT_CREDENTIALS_TEMP_FILE_NAME).path
125
+ GoodData::Command::Auth.write_credentials(DEFAULT_CREDENTIALS, temp_path)
126
+
127
+ GoodData::Command::Auth.store(temp_path)
128
+ end
129
+
130
+ it 'Do not overwrites credentials if not confirmed' do
131
+ @input.string = ''
132
+ @input << DEFAULT_CREDENTIALS_OVER[:email] << "\n"
133
+ @input << DEFAULT_CREDENTIALS_OVER[:password] << "\n"
134
+ @input << DEFAULT_CREDENTIALS_OVER[:token] << "\n"
135
+ @input << 'n' << "\n"
136
+ @input.rewind
137
+
138
+ temp_path = Tempfile.new(DEFAULT_CREDENTIALS_TEMP_FILE_NAME).path
139
+ GoodData::Command::Auth.write_credentials(DEFAULT_CREDENTIALS, temp_path)
140
+
141
+ GoodData::Command::Auth.store(temp_path)
142
+ result = GoodData::Command::Auth.read_credentials(temp_path)
143
+
144
+ result.should == DEFAULT_CREDENTIALS
65
145
  end
66
146
  end
67
147
 
68
148
  describe "#unstore" do
69
149
  it 'Removes stored credentials' do
70
- pending("Mock fileutils")
150
+ temp_path = Tempfile.new(DEFAULT_CREDENTIALS_TEMP_FILE_NAME).path
151
+ GoodData::Command::Auth.write_credentials(DEFAULT_CREDENTIALS, temp_path)
152
+ GoodData::Command::Auth.unstore(temp_path)
71
153
  end
72
154
  end
73
155
  end
@@ -6,6 +6,10 @@ describe GoodData::Command::Datasets do
6
6
  @cmd = GoodData::Command::Datasets.new()
7
7
  end
8
8
 
9
+ after(:each) do
10
+ GoodData.disconnect
11
+ end
12
+
9
13
  it "Is Possible to create GoodData::Command::Datasets instance" do
10
14
  @cmd.should be_a(GoodData::Command::Datasets)
11
15
  end
@@ -4,7 +4,11 @@ describe GoodData::Command::Process do
4
4
  deploy_dir = './'
5
5
 
6
6
  before(:each) do
7
- ConnectionHelper::create_default_connection
7
+ ConnectionHelper.create_default_connection
8
+ end
9
+
10
+ after(:each) do
11
+ GoodData.disconnect
8
12
  end
9
13
 
10
14
  it "Is Possible to create GoodData::Command::Process instance" do
@@ -25,7 +29,8 @@ describe GoodData::Command::Process do
25
29
 
26
30
  describe "#deploy" do
27
31
  it "Throws exception if no project specified" do
28
- expect { GoodData::Command::Process.deploy(deploy_dir) }.to raise_error
32
+ pending('Flickering test result, investigate why')
33
+ expect { GoodData::Command::Process.deploy(deploy_dir) }.to_not raise_error
29
34
  end
30
35
 
31
36
  it "Deploys graph" do
@@ -56,12 +61,12 @@ describe GoodData::Command::Process do
56
61
 
57
62
  describe "#run" do
58
63
  it "Throws exception if no project specified" do
59
- expect { GoodData::Command::Process.run(deploy_dir) }.to raise_error
64
+ expect { GoodData::Command::Process.run(deploy_dir, './main.grf') }.to raise_error
60
65
  end
61
66
 
62
67
  it "Runs process" do
63
68
  pending('Project ID needed')
64
- GoodData::Command::Process.run(deploy_dir)
69
+ GoodData::Command::Process.run(deploy_dir, './main.grf')
65
70
  end
66
71
  end
67
72
 
@@ -1,12 +1,16 @@
1
- require 'gooddata/commands/projects'
1
+ require 'gooddata/commands/project'
2
2
 
3
- describe GoodData::Command::Projects do
3
+ describe GoodData::Command::Project do
4
4
  before(:each) do
5
- ConnectionHelper::create_default_connection
5
+ ConnectionHelper.create_default_connection
6
6
  end
7
7
 
8
- it "Is Possible to create GoodData::Command::Projects instance" do
9
- cmd = GoodData::Command::Projects.new()
10
- cmd.should be_a(GoodData::Command::Projects)
8
+ after(:each) do
9
+ GoodData.disconnect
10
+ end
11
+
12
+ it "Is Possible to create GoodData::Command::Project instance" do
13
+ cmd = GoodData::Command::Project.new()
14
+ cmd.should be_a(GoodData::Command::Project)
11
15
  end
12
16
  end
@@ -6,7 +6,11 @@ describe GoodData::Command::Scaffold do
6
6
  end
7
7
 
8
8
  before(:each) do
9
- ConnectionHelper::create_default_connection
9
+ ConnectionHelper.create_default_connection
10
+ end
11
+
12
+ after(:each) do
13
+ GoodData.disconnect
10
14
  end
11
15
 
12
16
  it "Is Possible to create GoodData::Command::Scaffold instance" do
@@ -0,0 +1,22 @@
1
+ require 'gooddata/commands/user'
2
+
3
+ describe GoodData::Command::User do
4
+ before(:each) do
5
+ ConnectionHelper.create_default_connection
6
+ end
7
+
8
+ after(:each) do
9
+ GoodData.disconnect
10
+ end
11
+
12
+ it "Is Possible to create GoodData::Command::User instance" do
13
+ cmd = GoodData::Command::User.new()
14
+ cmd.should be_a(GoodData::Command::User)
15
+ end
16
+
17
+ describe "#show" do
18
+ it "Shows profile" do
19
+ GoodData::Command::User.show
20
+ end
21
+ end
22
+ end
@@ -1,9 +1,10 @@
1
1
  require 'gooddata/connection'
2
+ require 'gooddata/core/connection'
2
3
 
3
4
  describe GoodData::Connection do
4
5
  before(:all) do
5
- USERNAME = DEFAULT_USERNAME
6
- PASSWORD = DEFAULT_PASSWORD
6
+ USERNAME = ConnectionHelper::DEFAULT_USERNAME
7
+ PASSWORD = ConnectionHelper::DEFAULT_PASSWORD
7
8
  end
8
9
 
9
10
  it "Has DEFAULT_URL defined" do
@@ -18,9 +19,37 @@ describe GoodData::Connection do
18
19
  GoodData::Connection::TOKEN_PATH.should be_a(String)
19
20
  end
20
21
 
21
- it "Connects using username and password" do
22
- pending("This will no longer work. Discuss with Korczis")
23
- c = ConnectionHelper::create_default_connection(USERNAME, PASSWORD)
24
- c.should be_a(GoodData::Connection)
22
+ describe '#connect' do
23
+ it "Connects using username and password" do
24
+ c = GoodData.connect(ConnectionHelper::DEFAULT_USERNAME, ConnectionHelper::DEFAULT_PASSWORD)
25
+ c.should be_a(GoodData::Connection)
26
+ GoodData.disconnect
27
+ end
28
+ end
29
+
30
+ describe '#disconnect' do
31
+ it "Connects using username and password" do
32
+ GoodData.connect(ConnectionHelper::DEFAULT_USERNAME, ConnectionHelper::DEFAULT_PASSWORD)
33
+ GoodData.disconnect
34
+ end
35
+ end
36
+
37
+ describe '#connect_with_sst' do
38
+ it 'Connects using SST' do
39
+ pending('Get SST')
40
+ end
41
+ end
42
+
43
+ describe '#create_authenticated_connection' do
44
+ it "Creates authenticated connection" do
45
+ pending('Investigate how the credentials should be passed')
46
+ GoodData.connect(ConnectionHelper::DEFAULT_USERNAME, ConnectionHelper::DEFAULT_PASSWORD)
47
+ opts = {
48
+ :username => ConnectionHelper::DEFAULT_USERNAME,
49
+ :password => ConnectionHelper::DEFAULT_PASSWORD
50
+ }
51
+ GoodData.create_authenticated_connection(opts)
52
+ GoodData.disconnect
53
+ end
25
54
  end
26
55
  end