teamcity-ruby-client 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +15 -1
  3. data/README.md +4 -2
  4. data/lib/teamcity.rb +1 -0
  5. data/lib/teamcity/client/build_types.rb +25 -16
  6. data/lib/teamcity/client/builds.rb +19 -15
  7. data/lib/teamcity/client/common.rb +0 -12
  8. data/lib/teamcity/client/projects.rb +21 -17
  9. data/lib/teamcity/client/vcs_roots.rb +11 -13
  10. data/lib/teamcity/configuration.rb +1 -5
  11. data/lib/teamcity/connection.rb +7 -7
  12. data/lib/teamcity/headers.rb +47 -0
  13. data/lib/teamcity/request.rb +2 -8
  14. data/lib/teamcity/version.rb +1 -1
  15. data/spec/cassettes/BuildTypes/DELETE/_delete_agent_requirement/should_delete_the_agent_requirement.yml +51 -6
  16. data/spec/cassettes/BuildTypes/DELETE/_delete_buildtype/should_delete_a_buildtype.yml +8 -6
  17. data/spec/cassettes/BuildTypes/DELETE/_delete_buildtype_parameter/should_delete_a_buildtype_parameter.yml +49 -6
  18. data/spec/cassettes/BuildTypes/GET/_buildtype/should_fetch_the_details_of_a_buildtype_by_id.yml +51 -11
  19. data/spec/cassettes/BuildTypes/GET/_buildtype/should_raise_an_error_if_the_buildtype_does_not_exist.yml +8 -6
  20. data/spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_fetch_the_build_configuration_agent_requirements_for_a_buildtype.yml +9 -7
  21. data/spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_an_array.yml +9 -7
  22. data/spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_nil_if_there_are_no_agent_requirements_defined.yml +9 -7
  23. data/spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_fetch_the_build_configuration_artifact_dependencies_for_a_buildtype.yml +9 -7
  24. data/spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_an_array.yml +9 -7
  25. data/spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_nil_if_there_are_no_artifact_dependencies_defined.yml +9 -7
  26. data/spec/cassettes/BuildTypes/GET/_buildtype_features/should_fetch_the_build_configuration_features_for_a_buildtype.yml +9 -7
  27. data/spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_an_array.yml +9 -7
  28. data/spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_nil_if_there_are_no_features_defined.yml +9 -7
  29. data/spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_get_investigation_details.yml +11 -11
  30. data/spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_return_nil_if_no_one_is_investigating.yml +9 -7
  31. data/spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_fetch_the_build_configuration_parameters_for_a_buildtype.yml +9 -7
  32. data/spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_an_array.yml +9 -7
  33. data/spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_nil_if_there_are_no_parameters_defined.yml +9 -7
  34. data/spec/cassettes/BuildTypes/GET/_buildtype_settings/should_fetch_the_settings_for_a_given_buildtype.yml +51 -6
  35. data/spec/cassettes/BuildTypes/GET/_buildtype_settings/should_return_an_array.yml +51 -6
  36. data/spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_fetch_the_build_configuration_snapshot_dependencies_for_a_buildtype.yml +9 -7
  37. data/spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_an_array.yml +9 -7
  38. data/spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_nil_if_there_are_no_snapshot_dependencies_defined.yml +9 -7
  39. data/spec/cassettes/BuildTypes/GET/_buildtype_state/should_fetch_the_state_of_the_buildtype.yml +89 -0
  40. data/spec/cassettes/BuildTypes/GET/_buildtype_steps/should_fetch_the_build_configuration_steps_for_a_buildtype.yml +10 -9
  41. data/spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_an_array.yml +9 -9
  42. data/spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_nil_if_there_are_no_steps_defined.yml +9 -7
  43. data/spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_nil_if_the_buildtype_is_not_associated_with_a_template.yml +8 -6
  44. data/spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_the_attributes_of_the_associated_template.yml +9 -8
  45. data/spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_fetch_the_build_configuration_triggers_for_a_buildtype.yml +8 -6
  46. data/spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_an_array.yml +8 -6
  47. data/spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_nil_if_there_are_no_triggers_defined.yml +9 -7
  48. data/spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_fetch_the_build_configuration_vcs_root_entries_for_a_buildtype.yml +10 -8
  49. data/spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_an_array.yml +10 -8
  50. data/spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_nil_if_there_are_no_vcs_root_entries_defined.yml +9 -7
  51. data/spec/cassettes/BuildTypes/GET/_buildtypes/should_fetch_all_the_buildtypes.yml +9 -12
  52. data/spec/cassettes/BuildTypes/POST/_attach_vcs_root/should_attach_a_vcs_root_to_a_buildtype.yml +9 -9
  53. data/spec/cassettes/BuildTypes/POST/_create_agent_requirement/should_create_an_agent_requirement_for_a_buildtype.yml +10 -9
  54. data/spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_disable_a_build_step.yml +14 -10
  55. data/spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_enable_a_build_step.yml +18 -10
  56. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_pause_a_project.yml +14 -10
  57. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_a_projects_description.yml +15 -11
  58. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_the_buildtype_name.yml +15 -11
  59. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_parameter/should_set_a_buildtype_parameter.yml +15 -11
  60. data/spec/cassettes/Builds/DELETE/_unpin_build/should_unpin_a_build.yml +51 -6
  61. data/spec/cassettes/Builds/GET/_build/should_fetch_the_build_details.yml +53 -11
  62. data/spec/cassettes/Builds/GET/_build/should_raise_an_error_if_the_build_does_not_exist.yml +16 -13
  63. data/spec/cassettes/Builds/GET/_build_pinned_/should_return_false_when_a_build_is_not_pinned.yml +126 -0
  64. data/spec/cassettes/Builds/GET/_build_pinned_/should_return_true_when_a_build_is_pinned.yml +126 -0
  65. data/spec/cassettes/Builds/GET/_build_statistics/should_return_statistics_for_a_build.yml +50 -5
  66. data/spec/cassettes/Builds/GET/_build_tags/should_fetch_the_build_tags.yml +51 -6
  67. data/spec/cassettes/Builds/GET/_build_tags/should_return_an_empty_array_if_there_are_no_build_tags_defined_for_a_build.yml +89 -0
  68. data/spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_by_multiple_build_locators.yml +9 -7
  69. data/spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_results_by_build_locators.yml +9 -7
  70. data/spec/cassettes/Builds/GET/_builds/should_fetch_all_the_builds.yml +9 -7
  71. data/spec/cassettes/Builds/GET/{_build_statistics/should_return_an_empty_string_for_a_build_with_no_statistics.yml → _builds/should_return_an_empty_array_if_no_results_are_found.yml} +9 -7
  72. data/spec/cassettes/Builds/PUT/_pin_build/should_pin_a_build.yml +49 -6
  73. data/spec/cassettes/Projects/DELETE/_delete_project/should_delete_a_project.yml +17 -14
  74. data/spec/cassettes/Projects/DELETE/_delete_project_parameter/should_delete_a_project_parameter.yml +91 -6
  75. data/spec/cassettes/Projects/GET/_project/should_fetch_a_single_project_by_id.yml +10 -10
  76. data/spec/cassettes/Projects/GET/_project/should_raise_an_error_if_the_project_does_not_exist.yml +9 -7
  77. data/spec/cassettes/Projects/GET/_project_buildtypes/should_fetch_all_the_buildTypes_for_a_project.yml +9 -8
  78. data/spec/cassettes/Projects/GET/{_projects/should_return_nil_if_there_are_no_projects.yml → _project_buildtypes/should_return_nil_if_the_project_does_not_have_any_build_types.yml} +9 -7
  79. data/spec/cassettes/Projects/GET/_project_parameters/should_fetch_all_the_paramters_for_a_given_project.yml +9 -7
  80. data/spec/cassettes/Projects/GET/_project_parameters/should_return_nil_if_there_are_no_parameters_defined_for_a_project.yml +9 -7
  81. data/spec/cassettes/Projects/GET/_projects/should_fetch_projects.yml +9 -9
  82. data/spec/cassettes/Projects/POST/_copy_project/should_copy_a_project.yml +61 -15
  83. data/spec/cassettes/Projects/POST/_create_project/should_create_a_project.yml +9 -8
  84. data/spec/cassettes/Projects/PUT/_set_project_field/should_archive_a_project.yml +56 -10
  85. data/spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_description.yml +56 -10
  86. data/spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_name.yml +56 -10
  87. data/spec/cassettes/Projects/PUT/_set_project_parameter/should_set_a_project_parameter.yml +56 -10
  88. data/spec/cassettes/VCSRoots/GET/_vcs_root_details/should_fetch_the_vcs_root_details.yml +53 -6
  89. data/spec/cassettes/VCSRoots/GET/_vcs_roots/should_fetch_vcs_roots.yml +10 -7
  90. data/spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml +90 -0
  91. data/spec/spec_helper.rb +1 -1
  92. data/spec/teamcity/api_spec.rb +0 -1
  93. data/spec/teamcity/client/builds_spec.rb +36 -56
  94. data/spec/teamcity/client/buildtypes_spec.rb +78 -42
  95. data/spec/teamcity/client/projects_spec.rb +41 -32
  96. data/spec/teamcity/client/vcs_roots_spec.rb +9 -29
  97. data/spec/teamcity/client_spec.rb +5 -1
  98. data/spec/teamcity/headers_spec.rb +43 -0
  99. data/spec/teamcity_spec.rb +1 -28
  100. data/teamcity-ruby-client.gemspec +1 -0
  101. metadata +21 -23
  102. data/spec/cassettes/BuildTypes/GET/_buildtype_template/should_raise_an_exception_if_the_response_is_not_due_to_a_template_not_assigned.yml +0 -50
  103. data/spec/cassettes/Builds/GET/_build_tags/should_return_nil_if_there_are_no_build_tags_defined_for_a_build.yml +0 -44
  104. data/spec/cassettes/Builds/GET/_builds/should_allow_you_to_search_by_locator.yml +0 -44
  105. data/spec/cassettes/Projects/GET/_project_buildtypes/should_return_nil_if_the_project_does_not_have_any_build_build_types.yml +0 -44
  106. data/spec/cassettes/Projects/PUT/_set_project_field/should_un-archive_a_project.yml +0 -50
  107. data/spec/cassettes/Projects/PUT/_set_project_parameter/should_set_a_project_parameter_with_a_boolean_value.yml +0 -40
  108. data/spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_shared_vcs_root.yml +0 -45
  109. data/spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_vcs_root_that_is_only_shared_within_a_project.yml +0 -48
@@ -13,28 +13,25 @@ describe 'BuildTypes' do
13
13
  # Get requests
14
14
  describe 'GET', :vcr do
15
15
 
16
- before(:all) do
16
+ before(:each) do
17
+ TeamCity.reset
17
18
  TeamCity.configure do |config|
18
- config.endpoint = 'http://localhost:8111/guestAuth/app/rest/7.0/'
19
+ config.endpoint = 'http://localhost:8111/guestAuth/app/rest'
19
20
  end
20
- end
21
-
22
- before(:each) do
23
21
  @tc = TeamCity
24
22
  end
25
23
 
26
24
  describe '.buildtypes' do
27
-
28
25
  it 'should fetch all the buildtypes' do
29
- @tc.buildtypes.size.should eq(3)
26
+ build_types = @tc.buildtypes
27
+ build_types.should_not be_empty
30
28
  end
31
-
32
29
  end
33
30
 
34
31
  describe '.buildtype' do
35
-
36
32
  it 'should fetch the details of a buildtype by id' do
37
- @tc.buildtype(id: 'bt2').id.should eq('bt2')
33
+ build_type = @tc.buildtypes[0]
34
+ @tc.buildtype(id: build_type.id).id.should_not be_empty
38
35
  end
39
36
 
40
37
  it 'should raise an error if the buildtype does not exist' do
@@ -48,32 +45,33 @@ describe 'BuildTypes' do
48
45
 
49
46
  describe '.buildtype_state' do
50
47
  it 'should fetch the state of the buildtype' do
51
- pending "bug in rest api plugin"
52
- @tc.buildtype_state(id: 'bt2')
48
+ build_type = @tc.buildtypes[0]
49
+ @tc.buildtype_state(id: build_type.id).should eq('false')
53
50
  end
54
51
  end
55
52
 
56
53
  describe '.buildtype_settings' do
54
+
55
+ before(:each) do
56
+ @build_type = @tc.buildtypes[0]
57
+ end
58
+
57
59
  it 'should fetch the settings for a given buildtype' do
58
- @tc.buildtype_settings(id: 'bt2').should have_at_least(1).items
60
+ @tc.buildtype_settings(id: @build_type.id).should_not be_empty
59
61
  end
60
62
 
61
63
  it 'should return an array' do
62
- @tc.buildtype_settings(id: 'bt2').should be_kind_of(Array)
64
+ @tc.buildtype_settings(id: @build_type.id).should be_kind_of(Array)
63
65
  end
64
66
  end
65
67
 
66
68
  describe '.buildtype_template' do
67
69
  it 'should return the attributes of the associated template' do
68
- @tc.buildtype_template(id: 'bt2').id.should_not be_nil
70
+ @tc.buildtype_template(id: 'BuildTypeTests_BuildTypeWithTemplate').id.should_not be_nil
69
71
  end
70
72
 
71
73
  it 'should return nil if the buildtype is not associated with a template' do
72
- @tc.buildtype_template(id: 'bt3').should be_nil
73
- end
74
-
75
- it 'should raise an exception if the response is not due to a template not assigned' do
76
- expect { @tc.buildtype_template(id: 'bt500').should be_nil }.to raise_error
74
+ @tc.buildtype_template(id: 'BuildTypeTests_BuildTypeWithNoTemplate').should be_nil
77
75
  end
78
76
  end
79
77
 
@@ -91,33 +89,35 @@ describe 'BuildTypes' do
91
89
 
92
90
  before(:each) do
93
91
  @method_name = "buildtype_#{type}"
92
+ @buildtype_id_with_settings = 'BuildTypeTests_GetBuildTypeConfigTests'
93
+ @buildtype_id_with_no_settings = 'BuildTypeTests_GetBuildTypeEmptyConfigTests'
94
94
  end
95
95
 
96
- it "should fetch the build configuration #{type} for a buildtype" do
97
- @tc.send(@method_name, id: 'bt2').should have_at_least(1).items
96
+ it "should fetch the build configuration #{type} for a buildtype" do
97
+ @tc.send(@method_name, id: @buildtype_id_with_settings).should have_at_least(1).items
98
98
  end
99
99
 
100
100
  it 'should return an array' do
101
- @tc.send(@method_name, id: 'bt2').should be_kind_of(Array)
101
+ @tc.send(@method_name, id: @buildtype_id_with_settings).should be_kind_of(Array)
102
102
  end
103
103
 
104
104
  it "should return nil if there are no #{type} defined" do
105
- @tc.send(@method_name, id: 'bt4').should be_nil
105
+ @tc.send(@method_name, id: @buildtype_id_with_no_settings).should be_empty
106
106
  end
107
107
  end
108
108
  end
109
109
 
110
110
  describe '.buildtype_investigations' do
111
- before(:all) do
111
+ before(:each) do
112
112
  configure_client_with_authentication
113
113
  end
114
114
 
115
115
  it 'should get investigation details' do
116
- @tc.buildtype_investigations('bt9').should_not be_nil
116
+ @tc.buildtype_investigations('BuildTypeTests_GetBuildTypeWithInvestigations').should_not be_empty
117
117
  end
118
118
 
119
119
  it 'should return nil if no one is investigating' do
120
- @tc.buildtype_investigations('bt9').should be_nil
120
+ @tc.buildtype_investigations('BuildTypeTests_GetBuildTypeWithNoInvestigations').should be_empty
121
121
  end
122
122
  end
123
123
  end
@@ -130,31 +130,54 @@ describe 'BuildTypes' do
130
130
 
131
131
  describe '.set_buildtype_parameter' do
132
132
  it 'should set a buildtype parameter' do
133
- @tc.set_buildtype_parameter('bt3', 'set-this-parameter', 'some-value').should be_nil
133
+ buildtype_id = 'BuildTypeTests_PutSetBuildTypeParameters'
134
+ param_name = 'test-setting-buildtype-parameters'
135
+ param_value = 'param-value'
136
+ @tc.set_buildtype_parameter(buildtype_id, param_name, param_value).should eq(param_value)
134
137
  end
135
138
  end
136
139
 
137
140
  describe '.set_buildtype_field' do
141
+
142
+ before(:each) do
143
+ @buildtype_id = 'BuildTypeTests_PutSetBuildTypeField'
144
+ end
145
+
138
146
  it 'should set the buildtype name' do
139
- @tc.set_buildtype_field('bt3', 'name', 'new-buildtype-name').should be_nil
147
+ field_name = 'name'
148
+ field_value = 'PutSetBuildTypeField_Name_Changed_By_Test'
149
+ @tc.set_buildtype_field(@buildtype_id, field_name, field_value).should eq(field_value)
140
150
  end
141
151
 
142
152
  it 'should set a projects description' do
143
- @tc.set_buildtype_field('bt3', 'description', 'description-changed-by-test').should be_nil
153
+ field_name = 'description'
154
+ field_value = 'description-set_buildtype_field'
155
+ @tc.set_buildtype_field(@buildtype_id, field_name, field_value).should eq(field_value)
144
156
  end
145
157
 
146
158
  it 'should pause a project' do
147
- @tc.set_buildtype_field('bt3', 'paused', 'true').should be_nil
159
+ field_name = 'paused'
160
+ field_value = 'true'
161
+ @tc.set_buildtype_field(@buildtype_id, field_name, field_value).should eq(field_value)
148
162
  end
149
163
  end
150
164
 
151
165
  describe '.set_build_step_field' do
166
+ before(:each) do
167
+ @buildtype_id = 'BuildTypeTests_PutSetBuildStepField'
168
+ @build_step_id = 'RUNNER_7'
169
+ end
170
+
152
171
  it 'should disable a build step' do
153
- @tc.set_build_step_field('bt3', 'RUNNER_2', 'disabled', 'true')
172
+ field_name = 'disabled'
173
+ field_value = 'true'
174
+ @tc.set_build_step_field(@buildtype_id, @build_step_id, field_name, field_value)
154
175
  end
155
176
 
156
177
  it 'should enable a build step' do
157
- @tc.set_build_step_field('bt3', 'RUNNER_2', 'disabled', 'false')
178
+ field_name = 'disabled'
179
+ field_value = 'false'
180
+ @tc.set_build_step_field(@build_type_id, @build_step_id, field_name, field_value)
158
181
  end
159
182
  end
160
183
  end
@@ -164,21 +187,25 @@ describe 'BuildTypes' do
164
187
  configure_client_with_authentication
165
188
  end
166
189
 
190
+ before(:each) do
191
+ @buildtype_id = 'BuildTypeTests_PostBuildTypeTests'
192
+ end
193
+
167
194
  describe '.attach_vcs_root' do
168
195
  it 'should attach a vcs root to a buildtype' do
169
- @tc.attach_vcs_root('bt3', '1').id.should eq('1')
196
+ vcs_root_id = 'teamcity_ruby_client'
197
+ @tc.attach_vcs_root(@buildtype_id, vcs_root_id).id.should eq(vcs_root_id)
170
198
  end
171
199
  end
172
200
 
173
201
  describe '.create_agent_requirement' do
174
202
  it 'should create an agent requirement for a buildtype' do
175
- buildtype_id = 'bt3'
176
- parameter_name = 'test'
177
- parameter_value = 'test'
203
+ parameter_name = 'post-agent-requirement-name'
204
+ parameter_value = 'post-agent-requirement-value'
178
205
  condition = 'equals'
179
- args = [buildtype_id, parameter_name, parameter_value, condition]
206
+ args = [@buildtype_id, parameter_name, parameter_value, condition]
180
207
  response = @tc.create_agent_requirement(*args)
181
- response.id.should eq('test')
208
+ response.id.should eq(parameter_name)
182
209
  end
183
210
  end
184
211
  end
@@ -188,21 +215,30 @@ describe 'BuildTypes' do
188
215
  configure_client_with_authentication
189
216
  end
190
217
 
218
+ before(:each) do
219
+ @buildtype_id = 'BuildTypeTests_DeleteBuildTypeSettings'
220
+ end
221
+
191
222
  describe '.delete_buildtype_parameter' do
192
223
  it 'should delete a buildtype parameter' do
193
- @tc.delete_buildtype_parameter('bt3', 'delete-me').should be_nil
224
+ param_to_delete = 'delete-buildtype-param'
225
+ @tc.set_buildtype_parameter(@buildtype_id, param_to_delete, '')
226
+ @tc.delete_buildtype_parameter(@buildtype_id, 'delete-me').should be_nil
194
227
  end
195
228
  end
196
229
 
197
230
  describe '.delete_agent_requirement' do
198
231
  it 'should delete the agent requirement' do
199
- @tc.delete_agent_requirement('bt3', 'test').should be_nil
232
+ agent_requirement_to_delete = 'delete-agent-requirement'
233
+ @tc.create_agent_requirement(@buildtype_id, agent_requirement_to_delete, '', 'equals')
234
+ @tc.delete_agent_requirement(@buildtype_id, agent_requirement_to_delete).should be_nil
200
235
  end
201
236
  end
202
237
 
203
238
  describe '.delete_buildtype' do
204
239
  it 'should delete a buildtype' do
205
- @tc.delete_buildtype('bt8').should be_nil
240
+ project_id_to_delete = 'BuildTypeTests_DeleteBuildTypeRequest'
241
+ @tc.delete_buildtype(project_id_to_delete).should be_nil
206
242
  end
207
243
  end
208
244
  end
@@ -15,7 +15,7 @@ describe 'Projects' do
15
15
 
16
16
  before(:all) do
17
17
  TeamCity.configure do |config|
18
- config.endpoint = 'http://localhost:8111/guestAuth/app/rest/7.0/'
18
+ config.endpoint = 'http://localhost:8111/guestAuth/app/rest'
19
19
  end
20
20
  end
21
21
 
@@ -24,20 +24,15 @@ describe 'Projects' do
24
24
  end
25
25
 
26
26
  describe '.projects' do
27
-
28
27
  it 'should fetch projects' do
29
28
  @tc.projects.should_not be_nil
30
29
  end
31
-
32
- it 'should return nil if there are no projects' do
33
- @tc.projects.should be_nil
34
- end
35
30
  end
36
31
 
37
32
  describe '.project' do
38
33
 
39
34
  it 'should fetch a single project by id' do
40
- @tc.project(id: 'project2').should_not be_nil
35
+ @tc.project(id: 'GetProjectRequest').should_not be_nil
41
36
  end
42
37
 
43
38
  it 'should raise an error if the project does not exist' do
@@ -52,27 +47,27 @@ describe 'Projects' do
52
47
  describe '.project_buildtypes' do
53
48
 
54
49
  it 'should fetch all the buildTypes for a project' do
55
- bts = @tc.project_buildtypes(id: 'project2')
50
+ bts = @tc.project_buildtypes(id: 'GetProjectBuildTypes')
56
51
  bts.each do |bt|
57
- bt.projectId.should eq('project2')
52
+ bt.projectId.should eq('GetProjectBuildTypes')
58
53
  end
59
54
  end
60
55
 
61
- it 'should return nil if the project does not have any build build types' do
62
- bts = @tc.project_buildtypes(id: 'project5')
63
- bts.should be_nil
56
+ it 'should return nil if the project does not have any build types' do
57
+ bts = @tc.project_buildtypes(id: 'GetProjectWithNoBuildTypes')
58
+ bts.should be_empty
64
59
  end
65
60
  end
66
61
 
67
62
  describe '.project_parameters' do
68
63
  it 'should fetch all the paramters for a given project' do
69
- parameters = @tc.project_parameters(id: 'project2')
70
- parameters.size.should eq(3)
64
+ parameters = @tc.project_parameters(id: 'GetProjectWithParameters')
65
+ parameters.size.should_not eq(0)
71
66
  end
72
67
 
73
68
  it 'should return nil if there are no parameters defined for a project' do
74
- parameters = @tc.project_parameters(id: 'project3')
75
- parameters.should be_nil
69
+ parameters = @tc.project_parameters(id: 'GetProjectWithNoParameters')
70
+ parameters.should be_empty
76
71
  end
77
72
 
78
73
  it 'should raise an error if the project does not exist' do
@@ -90,20 +85,20 @@ describe 'Projects' do
90
85
 
91
86
  describe '.create_project' do
92
87
  it 'should create a project' do
93
- response = @tc.create_project('test-create-project')
94
- response.id.should match(/project/)
88
+ response = @tc.create_project('PostCreateProject')
89
+ response.id.should eq('PostCreateProject')
95
90
  end
96
91
  end
97
92
 
98
93
  describe '.copy_project' do
99
94
  it 'should copy a project' do
100
- source_project = @tc.project(id: 'project11')
101
- copied_project_name = 'copy-project-testB'
95
+ @tc.create_project('PostProjectToBeCopied')
96
+ source_project = @tc.project(id: 'PostProjectToBeCopied')
97
+ copied_project_name = 'PostCopyProject'
102
98
  response = @tc.copy_project(
103
99
  source_project.id,
104
100
  copied_project_name,
105
- :copyAllAssociatedSettings => true,
106
- :shareVCSRoots => true
101
+ :copyAllAssociatedSettings => true
107
102
  )
108
103
  response.name.should eq(copied_project_name)
109
104
  end
@@ -118,14 +113,18 @@ describe 'Projects' do
118
113
 
119
114
  describe '.delete_project' do
120
115
  it 'should delete a project' do
121
- response = @tc.create_project('project-to-delete')
116
+ response = @tc.create_project('ProjectToDelete')
122
117
  @tc.delete_project(response.id).should be_nil
123
118
  end
124
119
  end
125
120
 
126
121
  describe '.delete_project_parameter' do
127
122
  it 'should delete a project parameter' do
128
- response = @tc.delete_project_parameter('project2', 'delete-this-parameter')
123
+ project_id = 'DeleteProjectParameters'
124
+ param_to_delete = 'delete-this-param'
125
+ @tc.create_project(project_id)
126
+ @tc.set_project_parameter(project_id, param_to_delete, 'delete-me')
127
+ response = @tc.delete_project_parameter(project_id, param_to_delete)
129
128
  response.should be_nil
130
129
  end
131
130
  end
@@ -139,25 +138,35 @@ describe 'Projects' do
139
138
 
140
139
  describe '.set_project_parameter' do
141
140
  it 'should set a project parameter' do
142
- @tc.set_project_parameter('project2', 'set-this-parameter', 'some-value').should be_nil
143
- end
144
-
145
- it 'should set a project parameter with a boolean value' do
146
- @tc.set_project_parameter('project2', 'env.SET_ME', 'true')
141
+ project_id = 'PutCreateProjectParam'
142
+ param_name = 'set-with-param'
143
+ param_value = 'some-value'
144
+ @tc.create_project(project_id)
145
+ @tc.set_project_parameter(project_id, param_name, param_value).should eq(param_value)
147
146
  end
148
147
  end
149
148
 
150
149
  describe '.set_project_field' do
150
+
151
151
  it 'should set a projects name' do
152
- @tc.set_project_field('project21', 'name', 'project-change-by-test').should be_nil
152
+ project_id = 'PutSetProjectNameField'
153
+ @tc.create_project(project_id)
154
+ field_value = 'PutNewProjectName'
155
+ @tc.set_project_field(project_id, 'name', field_value).should eq(field_value)
153
156
  end
154
157
 
155
158
  it 'should set a projects description' do
156
- @tc.set_project_field('project21', 'description', 'description-changed-by-test').should be_nil
159
+ project_id = 'PutSetProjectDescriptionField'
160
+ @tc.create_project(project_id)
161
+ field_value = 'description-changed-by-test'
162
+ @tc.set_project_field(project_id, 'description', field_value).should eq(field_value)
157
163
  end
158
164
 
159
165
  it 'should archive a project' do
160
- @tc.set_project_field('project21', 'archived', 'true').should be_nil
166
+ project_id = 'PutSetProjectArchiveField'
167
+ @tc.create_project(project_id)
168
+ field_value = 'true'
169
+ @tc.set_project_field(project_id, 'archived', field_value).should eq(field_value)
161
170
  end
162
171
  end
163
172
  end
@@ -4,44 +4,33 @@ describe 'VCSRoots' do
4
4
 
5
5
  before(:each) do
6
6
  @tc = TeamCity
7
- end
8
-
9
- before(:all) do
10
- TeamCity.configure do |config|
11
- configure_client_with_authentication
12
- end
13
- end
14
-
15
- after(:all) do
16
- TeamCity.reset
7
+ configure_client_with_authentication
17
8
  end
18
9
 
19
10
  # GET requests
20
11
  describe 'GET', :vcr do
21
12
  describe '.vcs_roots' do
22
-
23
13
  it 'should fetch vcs roots' do
24
- @tc.vcs_roots.should_not be_nil
14
+ @tc.vcs_roots.should have_at_least(1).items
25
15
  end
26
16
  end
27
17
 
28
18
  describe '.vcs_root_details' do
29
-
30
19
  it 'should fetch the vcs root details' do
31
- response = @tc.vcs_root_details(1)
32
- response.id.should eq(1)
20
+ vcs_root_id = @tc.vcs_roots.first.id
21
+ response = @tc.vcs_root_details(vcs_root_id)
22
+ response.id.should eq(vcs_root_id)
33
23
  end
34
24
  end
35
25
  end
36
26
 
37
27
  describe 'POST', :vcr do
38
-
39
28
  describe '.create_vcs_root' do
40
-
41
- it 'should create a vcs root that is only shared within a project' do
42
- vcs_name = 'testvcsroot'
29
+ it 'should create a vcs root that is shared with the project and sub-projects' do
30
+ project_id = @tc.projects[1].id
31
+ vcs_name = 'PostCreateVCSRoot'
43
32
  vcs_type = 'git'
44
- response = @tc.create_vcs_root(vcs_name, vcs_type, :projectLocator => 'project2') do |properties|
33
+ response = @tc.create_vcs_root(vcs_name: vcs_name, vcs_type: vcs_type, project_id: project_id) do |properties|
45
34
  properties['branch'] = 'master'
46
35
  properties['url'] = 'git@github.com:jperry/teamcity-ruby-client.git'
47
36
  properties['authMethod'] = 'PRIVATE_KEY_DEFAULT'
@@ -49,15 +38,6 @@ describe 'VCSRoots' do
49
38
  end
50
39
  response.name.should eq(vcs_name)
51
40
  response.vcsName.should match(/#{vcs_type}/)
52
- response.shared.should be_false
53
- end
54
-
55
- it 'should create a shared vcs root' do
56
- response = @tc.create_vcs_root('sharedvcsroot', 'git', :shared => true) do |properties|
57
- properties['branch'] = 'master'
58
- properties['url'] = 'git@github.com:jperry/teamcity-ruby-client.git'
59
- end
60
- response.shared.should be_true
61
41
  end
62
42
  end
63
43
  end