epc 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. data/CHANGELOG +1 -0
  2. data/Gemfile +22 -0
  3. data/Rakefile +67 -0
  4. data/Rakefile.gem +1 -0
  5. data/bin/epc +10 -0
  6. data/lib/epc.rb +126 -0
  7. data/lib/epc/client/base_client.rb +80 -0
  8. data/lib/epc/client/http_client.rb +19 -0
  9. data/lib/epc/client/json_client.rb +48 -0
  10. data/lib/epc/command/archive_project_command.rb +24 -0
  11. data/lib/epc/command/archive_solution_command.rb +21 -0
  12. data/lib/epc/command/attach_library_command.rb +82 -0
  13. data/lib/epc/command/attach_libraryset_command.rb +32 -0
  14. data/lib/epc/command/attach_runtime_command.rb +27 -0
  15. data/lib/epc/command/base_command.rb +451 -0
  16. data/lib/epc/command/bind_service_command.rb +35 -0
  17. data/lib/epc/command/build_command.rb +83 -0
  18. data/lib/epc/command/config/create_config_command.rb +55 -0
  19. data/lib/epc/command/copy_deployment_command.rb +21 -0
  20. data/lib/epc/command/create_command.rb +13 -0
  21. data/lib/epc/command/create_dependency_command.rb +43 -0
  22. data/lib/epc/command/define_service_command.rb +37 -0
  23. data/lib/epc/command/delete_config_command.rb +63 -0
  24. data/lib/epc/command/delete_dependency_command.rb +40 -0
  25. data/lib/epc/command/delete_group_command.rb +40 -0
  26. data/lib/epc/command/delete_library_command.rb +30 -0
  27. data/lib/epc/command/delete_librarylanguage_command.rb +40 -0
  28. data/lib/epc/command/delete_libraryset_command.rb +40 -0
  29. data/lib/epc/command/delete_project_command.rb +54 -0
  30. data/lib/epc/command/delete_role_command.rb +25 -0
  31. data/lib/epc/command/delete_serviceversion_command.rb +52 -0
  32. data/lib/epc/command/delete_solution_command.rb +39 -0
  33. data/lib/epc/command/delete_user_command.rb +31 -0
  34. data/lib/epc/command/deploy_command.rb +142 -0
  35. data/lib/epc/command/deployment/create_deployment_command.rb +82 -0
  36. data/lib/epc/command/detach_library_command.rb +35 -0
  37. data/lib/epc/command/detach_libraryset_command.rb +8 -0
  38. data/lib/epc/command/group/create_group_command.rb +21 -0
  39. data/lib/epc/command/info_command.rb +11 -0
  40. data/lib/epc/command/library/create_library_command.rb +45 -0
  41. data/lib/epc/command/librarylanguage/create_librarylanguage_command.rb +24 -0
  42. data/lib/epc/command/libraryset/create_libraryset_command.rb +54 -0
  43. data/lib/epc/command/list_approvals_command.rb +27 -0
  44. data/lib/epc/command/list_attachedlibraries_command.rb +42 -0
  45. data/lib/epc/command/list_boundservices_command.rb +40 -0
  46. data/lib/epc/command/list_config_command.rb +60 -0
  47. data/lib/epc/command/list_dependencies_command.rb +43 -0
  48. data/lib/epc/command/list_deployments_command.rb +68 -0
  49. data/lib/epc/command/list_groups_command.rb +19 -0
  50. data/lib/epc/command/list_libraries_command.rb +19 -0
  51. data/lib/epc/command/list_librarylanguages_command.rb +19 -0
  52. data/lib/epc/command/list_librarysets_command.rb +26 -0
  53. data/lib/epc/command/list_objectroles_command.rb +25 -0
  54. data/lib/epc/command/list_objecttypes_command.rb +20 -0
  55. data/lib/epc/command/list_permissiongroups_command.rb +20 -0
  56. data/lib/epc/command/list_projects_command.rb +36 -0
  57. data/lib/epc/command/list_projecttypes_command.rb +20 -0
  58. data/lib/epc/command/list_rolepermissions_command.rb +21 -0
  59. data/lib/epc/command/list_roles_command.rb +26 -0
  60. data/lib/epc/command/list_runtimes_command.rb +16 -0
  61. data/lib/epc/command/list_service_types_command.rb +19 -0
  62. data/lib/epc/command/list_servicedefinitions_command.rb +19 -0
  63. data/lib/epc/command/list_serviceversions_command.rb +21 -0
  64. data/lib/epc/command/list_solutions_command.rb +25 -0
  65. data/lib/epc/command/list_stages_command.rb +21 -0
  66. data/lib/epc/command/list_users_command.rb +26 -0
  67. data/lib/epc/command/list_versions_command.rb +39 -0
  68. data/lib/epc/command/login_command.rb +32 -0
  69. data/lib/epc/command/logout_command.rb +20 -0
  70. data/lib/epc/command/objectrole/create_objectrole_command.rb +19 -0
  71. data/lib/epc/command/project/create_project_command.rb +78 -0
  72. data/lib/epc/command/pull_command.rb +209 -0
  73. data/lib/epc/command/push_command.rb +194 -0
  74. data/lib/epc/command/refresh_solution_command.rb +71 -0
  75. data/lib/epc/command/renew_command.rb +19 -0
  76. data/lib/epc/command/request_passwordchange_command.rb +23 -0
  77. data/lib/epc/command/role/create_role_command.rb +17 -0
  78. data/lib/epc/command/serviceversion/create_serviceversion_command.rb +33 -0
  79. data/lib/epc/command/show_deployment_command.rb +57 -0
  80. data/lib/epc/command/show_group_command.rb +35 -0
  81. data/lib/epc/command/show_libraryset_command.rb +54 -0
  82. data/lib/epc/command/show_project_command.rb +74 -0
  83. data/lib/epc/command/show_projecttype_command.rb +18 -0
  84. data/lib/epc/command/show_role_command.rb +46 -0
  85. data/lib/epc/command/show_solution_command.rb +54 -0
  86. data/lib/epc/command/show_user_command.rb +42 -0
  87. data/lib/epc/command/solution/create_solution_command.rb +34 -0
  88. data/lib/epc/command/solution/list_solutions_command.rb +25 -0
  89. data/lib/epc/command/solution/update_solution_command.rb +43 -0
  90. data/lib/epc/command/submit_deployment_command.rb +19 -0
  91. data/lib/epc/command/target_command.rb +26 -0
  92. data/lib/epc/command/unarchive_project_command.rb +23 -0
  93. data/lib/epc/command/unarchive_solution_command.rb +21 -0
  94. data/lib/epc/command/unbind_service_command.rb +42 -0
  95. data/lib/epc/command/undefine_service_command.rb +33 -0
  96. data/lib/epc/command/undeploy_command.rb +106 -0
  97. data/lib/epc/command/update_config_command.rb +62 -0
  98. data/lib/epc/command/update_deploymentproject_command.rb +54 -0
  99. data/lib/epc/command/update_group_command.rb +43 -0
  100. data/lib/epc/command/update_librarylanguage_command.rb +28 -0
  101. data/lib/epc/command/update_libraryset_command.rb +80 -0
  102. data/lib/epc/command/update_project_command.rb +49 -0
  103. data/lib/epc/command/update_role_command.rb +47 -0
  104. data/lib/epc/command/update_rolepermissions_command.rb +83 -0
  105. data/lib/epc/command/update_solution_command.rb +45 -0
  106. data/lib/epc/command/update_user_command.rb +57 -0
  107. data/lib/epc/command/user/create_user_command.rb +27 -0
  108. data/lib/epc/command/vote_deployment_command.rb +29 -0
  109. data/lib/epc/config.rb +245 -0
  110. data/lib/epc/error/basic_error.rb +6 -0
  111. data/lib/epc/error/fatal_error.rb +6 -0
  112. data/lib/epc/error/input_error.rb +6 -0
  113. data/lib/epc/error/internal_error.rb +6 -0
  114. data/lib/epc/help.rb +292 -0
  115. data/lib/epc/persistent_attributes.rb +18 -0
  116. data/lib/epc/runner.rb +177 -0
  117. data/lib/epc/tabular_outputter.rb +161 -0
  118. data/lib/epc/version.rb +3 -0
  119. data/lib/fixnum.rb +9 -0
  120. data/lib/object.rb +13 -0
  121. data/test/command/archive_project_command_test.rb +41 -0
  122. data/test/command/archive_solution_command_test.rb +40 -0
  123. data/test/command/attach_library_command_test.rb +124 -0
  124. data/test/command/attach_libraryset_command_test.rb +49 -0
  125. data/test/command/attach_runtime_command_test.rb +44 -0
  126. data/test/command/base_command_test.rb +276 -0
  127. data/test/command/bind_service_command_test.rb +46 -0
  128. data/test/command/build_command_test.rb +103 -0
  129. data/test/command/copy_deployment_command_test.rb +38 -0
  130. data/test/command/create_config_command_test.rb +124 -0
  131. data/test/command/create_dependency_command_test.rb +55 -0
  132. data/test/command/create_deployment_command_test.rb +136 -0
  133. data/test/command/create_group_command_test.rb +34 -0
  134. data/test/command/create_library_command_test.rb +61 -0
  135. data/test/command/create_librarylanguage_command_test.rb +51 -0
  136. data/test/command/create_libraryset_command_test.rb +81 -0
  137. data/test/command/create_objectrole_command_test.rb +37 -0
  138. data/test/command/create_project_command_test.rb +102 -0
  139. data/test/command/create_role_command_test.rb +31 -0
  140. data/test/command/create_serviceversion_command_test.rb +60 -0
  141. data/test/command/create_solution_command_test.rb +70 -0
  142. data/test/command/create_user_command_test.rb +54 -0
  143. data/test/command/define_service_command_test.rb +55 -0
  144. data/test/command/delete_config_command_test.rb +82 -0
  145. data/test/command/delete_dependency_command_test.rb +50 -0
  146. data/test/command/delete_group_command_test.rb +56 -0
  147. data/test/command/delete_library_command_test.rb +43 -0
  148. data/test/command/delete_librarylanguage_command_test.rb +55 -0
  149. data/test/command/delete_libraryset_command_test.rb +55 -0
  150. data/test/command/delete_project_command_test.rb +76 -0
  151. data/test/command/delete_role_command_test.rb +41 -0
  152. data/test/command/delete_serviceversion_command_test.rb +53 -0
  153. data/test/command/delete_solution_command_test.rb +79 -0
  154. data/test/command/delete_user_command_test.rb +56 -0
  155. data/test/command/deploy_command_test.rb +185 -0
  156. data/test/command/detach_library_command_test.rb +53 -0
  157. data/test/command/info_command_test.rb +17 -0
  158. data/test/command/list_approvals_command_test.rb +41 -0
  159. data/test/command/list_boundservices_command_test.rb +46 -0
  160. data/test/command/list_config_command_test.rb +72 -0
  161. data/test/command/list_dependencies_command_test.rb +46 -0
  162. data/test/command/list_deployments_command_test.rb +112 -0
  163. data/test/command/list_deploymentstages_command_test.rb +44 -0
  164. data/test/command/list_libraries_command_test.rb +42 -0
  165. data/test/command/list_librarylanguages_command_test.rb +34 -0
  166. data/test/command/list_librarysets_command_test.rb +33 -0
  167. data/test/command/list_objectroles_command_test.rb +41 -0
  168. data/test/command/list_objecttypes_command_test.rb +25 -0
  169. data/test/command/list_permissiongroups_command_test.rb +25 -0
  170. data/test/command/list_projects_command_test.rb +63 -0
  171. data/test/command/list_projecttypes_command_test.rb +39 -0
  172. data/test/command/list_rolepermissions_command_test.rb +39 -0
  173. data/test/command/list_roles_command_test.rb +46 -0
  174. data/test/command/list_runtimes_command_test.rb +30 -0
  175. data/test/command/list_service_types_command_test.rb +44 -0
  176. data/test/command/list_servicedefinitions_command_test.rb +44 -0
  177. data/test/command/list_serviceversions_command_test.rb +47 -0
  178. data/test/command/list_solutions_command_test.rb +48 -0
  179. data/test/command/list_users_command_test.rb +33 -0
  180. data/test/command/login_command_test.rb +83 -0
  181. data/test/command/logout_command_test.rb +30 -0
  182. data/test/command/pull_command_test.rb +229 -0
  183. data/test/command/push_command_test.rb +246 -0
  184. data/test/command/refresh_solution_command_test.rb +35 -0
  185. data/test/command/renew_command_test.rb +43 -0
  186. data/test/command/request_passwordchange_command_test.rb +31 -0
  187. data/test/command/show_group_command_test.rb +50 -0
  188. data/test/command/show_libraryset_command_test.rb +51 -0
  189. data/test/command/show_project_command_test.rb +57 -0
  190. data/test/command/show_projecttype_command_test.rb +46 -0
  191. data/test/command/show_role_command_test.rb +37 -0
  192. data/test/command/show_solution_command_test.rb +59 -0
  193. data/test/command/show_user_command_test.rb +50 -0
  194. data/test/command/submit_deployment_command_test.rb +37 -0
  195. data/test/command/target_command_test.rb +58 -0
  196. data/test/command/unarchive_project_command_test.rb +45 -0
  197. data/test/command/unarchive_solution_command_test.rb +43 -0
  198. data/test/command/unbind_service_command_test.rb +48 -0
  199. data/test/command/undefine_service_command_test.rb +49 -0
  200. data/test/command/update_config_command_test.rb +74 -0
  201. data/test/command/update_deploymentproject_command_test.rb +77 -0
  202. data/test/command/update_group_command_test.rb +69 -0
  203. data/test/command/update_librarylanguage_command_test.rb +43 -0
  204. data/test/command/update_libraryset_command_test.rb +113 -0
  205. data/test/command/update_project_command_test.rb +56 -0
  206. data/test/command/update_role_command_test.rb +42 -0
  207. data/test/command/update_rolepermissions_command_test.rb +54 -0
  208. data/test/command/update_solution_command_test.rb +58 -0
  209. data/test/command/update_user_command_test.rb +76 -0
  210. data/test/command/vote_deployment_command_test.rb +33 -0
  211. data/test/config_test.rb +70 -0
  212. data/test/successful_test.rb +21 -0
  213. data/test/test_files/pom.xml +273 -0
  214. data/test/test_helper.rb +25 -0
  215. metadata +470 -0
@@ -0,0 +1,246 @@
1
+ require 'test_helper'
2
+
3
+ class PushCommandTest < Test::Unit::TestCase
4
+ should_require_login
5
+
6
+ context "execute" do
7
+ setup do
8
+ @mock_client = mock("Client")
9
+ @mock_config = mock("Config")
10
+ @command = EPC::Command::PushCommand.new(@mock_client)
11
+ end
12
+
13
+ should "fail if solution can't be inferred" do
14
+ @command.expects(:infer_solution_context).returns(nil)
15
+ assert_raise EPC::Error::FatalError do
16
+ @command.execute
17
+ end
18
+ end
19
+
20
+ should "fail if current directory is not a solution/project directory" do
21
+ @command.expects(:infer_solution_context).returns([1, "FirstSolution"])
22
+ EPC::Config.expects(:is_solution_dir?).returns(false)
23
+ EPC::Config.expects(:is_project_dir?).returns(false)
24
+ @command.expects(:say)
25
+ assert_equal(@command.execute, 1)
26
+ end
27
+
28
+ should "push all projects if run from solution directory with no project name specified" do
29
+ @command.expects(:infer_solution_context).returns([1, "FirstSolution"])
30
+ EPC::Config.expects(:is_solution_dir?).returns(true)
31
+ @command.expects(:ask_yn).returns("Y")
32
+
33
+ assert_raise EPC::Error::FatalError do
34
+ @command.execute
35
+ end
36
+ end
37
+
38
+ should "push only the specified project from the solution directory" do
39
+ @command.expects(:infer_solution_context).returns([1, "FirstSolution"])
40
+ EPC::Config.expects(:is_solution_dir?).with(File.expand_path(".")).returns(true)
41
+ @command.expects(:infer_project_context).with("MyProj", File.expand_path("."), 1, {:get_project_name => true}).returns([1, "FirstProject"])
42
+
43
+ @command.expects(:ask_yn).returns('n')
44
+
45
+ @command.execute("MyProj")
46
+ end
47
+
48
+ should "zip, push, confirm and poll for build status" do
49
+ command = EPC::Command::PushCommand.new(@mock_client)
50
+
51
+ expected_path = File.expand_path(".")
52
+ expected_zip_path = File.join(expected_path, "pushed.zip")
53
+ expected_url = "http://www.there.com/solution/project/version/pushed.zip"
54
+
55
+ command.expects(:infer_solution_context).returns([1, "FirstSolution"])
56
+
57
+ EPC::Config.expects(:is_solution_dir?).returns(false)
58
+ EPC::Config.expects(:is_project_dir?).returns(true)
59
+ command.expects(:infer_project_context).returns([1, "FirstProject"])
60
+
61
+ command.expects(:ask_yn).returns('Y')
62
+
63
+ command.expects(:infer_project_context).returns([1, "FirstProject"])
64
+ command.expects(:say).with("\nPushing FirstProject...")
65
+ command.expects(:zip_source).with(expected_path).returns(expected_zip_path)
66
+ command.expects(:sha1).with(expected_zip_path).returns('aabbcc')
67
+ command.expects(:create_push).with("FirstProject", "FirstSolution", "aabbcc", nil).returns([202, expected_url, 'ddeeff', 1])
68
+ command.expects(:push_zip).with(expected_zip_path, expected_url, 'ddeeff').returns(true)
69
+ command.expects(:confirm_push).with(1).returns({:id => 1, :build_id=> 1, :project_version => 2})
70
+ command.expects(:poll_for_build_status).with(1)
71
+
72
+ command.execute
73
+ end
74
+
75
+ end
76
+
77
+ context "create_push" do
78
+ setup do
79
+ @mock_client = mock("Client")
80
+
81
+ EPC::Config.target_file = '~/.epc_test_target'
82
+ end
83
+
84
+ should "return true, the url and signature if the status is 202" do
85
+ command = EPC::Command::PushCommand.new(@mock_client)
86
+
87
+ @mock_client.expects(:post).with("/api/v1/pushes",
88
+ { :project_name => 'Test Project', :solution_name => "Test Solution", :sha1 => "abcdef", :note => nil}).
89
+ returns([202, { :url => "http://there.com/repo", :signature => "xxyyzz", :id => 1 }, {}])
90
+ command.expects(:say).with("Successfully created a push with [http://localhost:3000]")
91
+
92
+ status, url, signature, id = command.send(:create_push, "Test Project", "Test Solution", "abcdef")
93
+
94
+ assert_equal 202, status
95
+ assert_equal("http://there.com/repo", url)
96
+ assert_equal("xxyyzz", signature)
97
+ assert_equal(1, id)
98
+ end
99
+
100
+ should "raise a BasicError if the status is not 202" do
101
+ command = EPC::Command::PushCommand.new(@mock_client)
102
+
103
+ @mock_client.expects(:post).with("/api/v1/pushes",
104
+ { :project_name => 'Test Project', :solution_name => "Test Solution", :sha1 => "abcdef", :note => nil }).
105
+ returns([404, { :message => "Not Found" }, {}])
106
+ # command.expects(:say).with("Push creation failed [Not Found]. Aborting push command.")
107
+
108
+ assert_raise EPC::Error::BasicError do
109
+ status, url, signature, id = command.send(:create_push, "Test Project", "Test Solution", "abcdef")
110
+ end
111
+ end
112
+ end
113
+
114
+ context "confirm_push" do
115
+ setup do
116
+ @mock_client = mock("Client")
117
+
118
+ EPC::Config.target_file = '~/.epc_test_target'
119
+ end
120
+
121
+ should "return true if the status is 200" do
122
+ command = EPC::Command::PushCommand.new(@mock_client)
123
+
124
+ @mock_client.expects(:put).with("/api/v1/pushes/1/confirm",
125
+ { :pushed => "yes" }).returns([200, { :id => 1 }, {}])
126
+ command.expects(:say).with("Successfully confirmed the push with [http://localhost:3000]")
127
+
128
+ confirmed = command.send(:confirm_push, 1)
129
+
130
+ assert(confirmed)
131
+ end
132
+
133
+ should "return false if the status is not 200" do
134
+ command = EPC::Command::PushCommand.new(@mock_client)
135
+
136
+ @mock_client.expects(:put).with("/api/v1/pushes/1/confirm",
137
+ { :pushed => "yes" }).returns([404, { :message => "Not Found" }, {}])
138
+ command.expects(:say).with("Push confirmation failed [Not Found].")
139
+
140
+ confirmed = command.send(:confirm_push, 1)
141
+
142
+ assert_nil(confirmed)
143
+ end
144
+
145
+ end
146
+
147
+ context "zip_source" do
148
+ setup do
149
+ @mock_client = mock("Client")
150
+ end
151
+
152
+ should "create a zip file based on the src files" do
153
+ command = EPC::Command::PushCommand.new(@mock_client)
154
+
155
+
156
+ command.expects(:check_push_directory).returns(true)
157
+ command.expects(:recurse_project_directory).returns(
158
+ [["toplevel/lib/foo.jar", "toplevel/src/foo1.java", "toplevel/src/foo2.java"],
159
+ ["lib/foo.jar", "src/foo1.java", "src/foo2.java"]])
160
+
161
+ expected_path = File.expand_path(".")
162
+ expected_zip_path = File.join(expected_path, "pushed.zip")
163
+
164
+ mock_zf = mock("Zip::ZipFile")
165
+ Zip::ZipFile.expects(:open).yields(mock_zf)
166
+ mock_zf.expects(:add).with("lib/foo.jar", "toplevel/lib/foo.jar")
167
+ mock_zf.expects(:add).with("src/foo1.java", "toplevel/src/foo1.java")
168
+ mock_zf.expects(:add).with("src/foo2.java", "toplevel/src/foo2.java")
169
+
170
+ zip_path = command.send(:zip_source, expected_path)
171
+
172
+ end
173
+ end
174
+
175
+ context "push_zip" do
176
+ setup do
177
+ @mock_client = mock("Client")
178
+ end
179
+
180
+ should "return true if the status is 200" do
181
+ command = EPC::Command::PushCommand.new(@mock_client)
182
+ command.expects(:http_client).returns(@mock_client)
183
+
184
+ expected_path = File.expand_path(".")
185
+ expected_zip_path = File.join(expected_path, "pushed.zip")
186
+
187
+ expected_base_url = "http://www.there.com/solution/project/version"
188
+
189
+ mock_file = mock("File")
190
+ File.expects(:new).with(expected_zip_path, "rb").returns(mock_file)
191
+
192
+ @mock_client.expects(:post).with("#{expected_base_url}",
193
+ { :file => mock_file }, nil, { 'X-AGILEMETHODS-SIGNATURE' => 'ddeeff' }, true).
194
+ returns([200, {}, {}])
195
+ command.expects(:say).with("Successfully pushed the zip file to the build area")
196
+
197
+ pushed = command.send(:push_zip, expected_zip_path, expected_base_url, 'ddeeff')
198
+
199
+ assert(pushed)
200
+ end
201
+
202
+ should "return false if the status is not 200" do
203
+ command = EPC::Command::PushCommand.new(@mock_client)
204
+ command.expects(:http_client).returns(@mock_client)
205
+
206
+ expected_path = File.expand_path(".")
207
+ expected_zip_path = File.join(expected_path, "pushed.zip")
208
+
209
+ expected_base_url = "http://www.there.com/solution/project/version"
210
+
211
+ mock_file = mock("File")
212
+ File.expects(:new).with(expected_zip_path, "rb").returns(mock_file)
213
+
214
+ @mock_client.expects(:post).with("#{expected_base_url}",
215
+ { :file => mock_file }, nil, { 'X-AGILEMETHODS-SIGNATURE' => 'ddeeff' }, true).
216
+ returns([500, {}, {}])
217
+
218
+ assert_raise EPC::Error::BasicError do
219
+ pushed = command.send(:push_zip, expected_zip_path, expected_base_url, 'ddeeff')
220
+ end
221
+
222
+ end
223
+ end
224
+
225
+ context "check push directory" do
226
+ setup do
227
+ @mock_client = mock("Client")
228
+ @command = EPC::Command::PushCommand.new(@mock_client)
229
+ end
230
+
231
+ should "notify if path does not exist" do
232
+ File.expects(:exists?).returns(false)
233
+ @command.expects(:say)
234
+ assert_equal(@command.send(:check_push_directory, "path"), false)
235
+ end
236
+
237
+ should "notify if path is not a directory" do
238
+ File.expects(:exists?).returns(true)
239
+ File.expects(:directory?).returns(false)
240
+ @command.expects(:say)
241
+ assert_equal(@command.send(:check_push_directory, "path"), false)
242
+ end
243
+
244
+ end
245
+
246
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ class RefreshSolutionCommandTest < Test::Unit::TestCase
4
+ context "execute" do
5
+ setup do
6
+ @mock_client = mock("Client")
7
+ @command = EPC::Command::RefreshSolutionCommand.new(@mock_client)
8
+ end
9
+
10
+ should "fail if solution can't be inferred" do
11
+ @command.expects(:infer_solution_context).returns(nil)
12
+ assert_raise EPC::Error::FatalError do
13
+ @command.execute
14
+ end
15
+ end
16
+
17
+
18
+ should "prompt the user" do
19
+ @command.options[:prompt_refresh] = true
20
+ @command.expects(:infer_solution_context).returns([1, "FirstSolution"])
21
+ @command.expects(:ask_yn).returns("N")
22
+ @command.execute
23
+ end
24
+
25
+ should "fail if it can't retrieve data about solution" do
26
+ @command.expects(:infer_solution_context).returns([1, "FirstSolution"])
27
+ @command.expects(:ask_yn).returns("Y")
28
+ @mock_client.expects(:get).returns([500, {:message => "System exception"}, {}])
29
+ @command.expects(:say)
30
+ @command.execute
31
+
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ class RenewCommandTest < Test::Unit::TestCase
4
+ context "execute" do
5
+ setup do
6
+ @mock_client = mock("Client")
7
+ @mock_config = mock("Config")
8
+ end
9
+
10
+ should "update the auth_token if the status is 200" do
11
+ command = EPC::Command::RenewCommand.new(@mock_client)
12
+
13
+ @mock_client.expects(:put).with("/api/v1/tokens/renew").returns([200, { :authentication_token => 'wxyz' }, {}])
14
+ EPC::Config.expects(:store_auth_token).with('wxyz')
15
+
16
+ command.expects(:say)
17
+ command.execute
18
+ end
19
+
20
+ should "not update the auth_token if the status is not 200" do
21
+ command = EPC::Command::RenewCommand.new(@mock_client)
22
+
23
+ @mock_client.expects(:put).with("/api/v1/tokens/renew").
24
+ returns([500, { :message => "Error talking with the database." }, {}])
25
+ EPC::Config.expects(:store_auth_token).never
26
+ command.expects(:say)
27
+ command.execute
28
+ end
29
+
30
+ should "catch and handle exceptions" do
31
+ command = EPC::Command::RenewCommand.new(@mock_client)
32
+
33
+ @mock_client.expects(:put).with("/api/v1/tokens/renew").returns([200, { :authentication_token => 'wxyz' }, {}])
34
+ EPC::Config.expects(:store_auth_token).with('wxyz').raises(Exception)
35
+
36
+ command.expects(:say)
37
+ command.execute
38
+ end
39
+
40
+ should_require_login
41
+
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ class RequestPasswordchangeCommandTest < Test::Unit::TestCase
4
+ should_require_login
5
+
6
+ context "execution" do
7
+
8
+ setup do
9
+ @mock_client = mock("Client")
10
+ @command = EPC::Command::RequestPasswordchangeCommand.new(@mock_client)
11
+ end
12
+
13
+ should "fail if no email is given" do
14
+ assert_raise EPC::Error::FatalError do
15
+ @command.execute
16
+ end
17
+ end
18
+
19
+ should "fail if the status is unsuccessful" do
20
+ @mock_client.expects(:put).with(EPC::Config::USERS_PATH + "/user@epaas.com/change_password_request").returns([500, {:message => "System exception"}, {}])
21
+ @command.expects(:say).with("Request failed: [System exception]")
22
+ @command.execute("user@epaas.com")
23
+ end
24
+
25
+ should "send the request" do
26
+ @mock_client.expects(:put).with(EPC::Config::USERS_PATH + "/user@epaas.com/change_password_request").returns([200, {:id => 1}, {}])
27
+ @command.expects(:say).with("Request successfully sent.")
28
+ @command.execute("user@epaas.com")
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ class ShowGroupCommandTest < Test::Unit::TestCase
4
+ should_require_login
5
+
6
+ context "execute" do
7
+ setup do
8
+ @mock_client = mock("Client")
9
+ @command = EPC::Command::ShowGroupCommand.new(@mock_client)
10
+ end
11
+
12
+ should "fail if no group is specified" do
13
+ assert_raise EPC::Error::FatalError do
14
+ assert_equal(@command.execute, 1)
15
+ end
16
+ end
17
+
18
+ should "fail if status is not 200" do
19
+ @mock_client.expects(:get).with(EPC::Config::GROUPS_PATH + "/1?include=users").
20
+ returns([404, {:message => "Not Found"}, {}])
21
+ @command.expects(:say).with("Request failed: [Not Found]")
22
+ assert_equal(@command.execute(1), 1)
23
+ end
24
+
25
+ should "fail if group_id can't be determined" do
26
+ @command.expects(:get_resource_id).with(EPC::Config::GROUPS_PATH, :name, "admins").returns(nil)
27
+ assert_raise EPC::Error::FatalError do
28
+ assert_equal(@command.execute("admins"), 1)
29
+ end
30
+ end
31
+
32
+ should "show a group specified by id" do
33
+ @mock_client.expects(:get).with(EPC::Config::GROUPS_PATH + "/1?include=users").
34
+ returns([200, {}, {}])
35
+ @command.expects(:say).at_least_once
36
+
37
+ assert_equal(@command.execute(1), 200)
38
+ end
39
+
40
+
41
+ should "show a group specified by name" do
42
+ @command.expects(:get_resource_id).with(EPC::Config::GROUPS_PATH, :name, "admins").returns(1)
43
+ @mock_client.expects(:get).with(EPC::Config::GROUPS_PATH + "/1?include=users").
44
+ returns([200, {:id => 1, :name => "Grp1", :users => [{:id => 1, :name => "Group Leader", :email => "group_leader@epaas.com"}]}, {}])
45
+ @command.expects(:say).at_least_once
46
+
47
+ assert_equal(@command.execute("admins"), 200)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ class ShowLibrarysetCommandTest < Test::Unit::TestCase
4
+ should_require_login
5
+
6
+ context "retrieval " do
7
+ setup do
8
+ @mock_client = mock("Client")
9
+ @command = EPC::Command::ShowLibrarysetCommand.new(@mock_client)
10
+ end
11
+
12
+ should "fail if library set is not specified" do
13
+ @command.expects(:say).with("You must specify a library-set")
14
+ @command.expects(:say).with(EPC::Help::COMMAND_USAGES[:show_libraryset])
15
+ assert_equal(@command.execute, 1)
16
+ end
17
+
18
+ should "fail if library set id can't be determined" do
19
+ @command.expects(:get_resource_id).with(EPC::Config::LIBRARY_SETS_PATH, :name, "lib-set").returns(nil)
20
+ @command.expects(:say).with("Library set could not be determined")
21
+ assert_equal(@command.execute("lib-set"), 1)
22
+ end
23
+
24
+ should "show error if status is not 201" do
25
+ @mock_client.expects(:get).with(EPC::Config::LIBRARY_SETS_PATH+"/1").
26
+ returns([404, {:message => "Not Found"}, {}])
27
+
28
+ @command.expects(:say).with("Request failed: [Not Found]")
29
+ assert_equal(@command.execute(1), 404)
30
+ end
31
+
32
+ should "show details about the requested library set" do
33
+ @mock_client.expects(:get).with(EPC::Config::LIBRARY_SETS_PATH+"/1").
34
+ returns([200, {:id => 1, :name => "lib-set", :created_at => Time.now.to_s, :updated_at => Time.now.to_s, :libraries => [{:id => 1, :name => "lib1"}], :library_language => []}, {}])
35
+
36
+ @command.expects(:say).at_least_once
37
+ assert_equal(@command.execute(1), 200)
38
+ end
39
+
40
+ should "output the results as json when --json is passed" do
41
+ @command.options[:json] = true
42
+ @mock_client.expects(:get).with(EPC::Config::LIBRARY_SETS_PATH+"/1").
43
+ returns([200, {:id => 1, :name => "lib-set", :libraries => [{:id => 1, :name => "lib1"}], :library_language => []}, {}])
44
+
45
+ @command.expects(:say)
46
+ assert_equal(@command.execute(1), 200)
47
+ end
48
+
49
+ end
50
+
51
+ end