teamcity 1.3.1

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 (137) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.travis.yml +3 -0
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +83 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +9 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +194 -0
  10. data/Rakefile +1 -0
  11. data/lib/faraday/null_response_body.rb +17 -0
  12. data/lib/teamcity.rb +26 -0
  13. data/lib/teamcity/api.rb +19 -0
  14. data/lib/teamcity/client.rb +16 -0
  15. data/lib/teamcity/client/build_types.rb +305 -0
  16. data/lib/teamcity/client/builds.rb +92 -0
  17. data/lib/teamcity/client/common.rb +23 -0
  18. data/lib/teamcity/client/projects.rb +159 -0
  19. data/lib/teamcity/client/tests.rb +24 -0
  20. data/lib/teamcity/client/vcs_roots.rb +70 -0
  21. data/lib/teamcity/configuration.rb +51 -0
  22. data/lib/teamcity/connection.rb +28 -0
  23. data/lib/teamcity/element_builder.rb +27 -0
  24. data/lib/teamcity/headers.rb +47 -0
  25. data/lib/teamcity/request.rb +35 -0
  26. data/lib/teamcity/version.rb +3 -0
  27. data/spec/cassettes/BuildTypes/DELETE/_delete_agent_requirement/should_delete_the_agent_requirement.yml +83 -0
  28. data/spec/cassettes/BuildTypes/DELETE/_delete_buildtype/should_delete_a_buildtype.yml +40 -0
  29. data/spec/cassettes/BuildTypes/DELETE/_delete_buildtype_parameter/should_delete_a_buildtype_parameter.yml +81 -0
  30. data/spec/cassettes/BuildTypes/GET/_buildtype/should_fetch_the_details_of_a_buildtype_by_id.yml +89 -0
  31. data/spec/cassettes/BuildTypes/GET/_buildtype/should_raise_an_error_if_the_buildtype_does_not_exist.yml +52 -0
  32. data/spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_fetch_the_build_configuration_agent_requirements_for_a_buildtype.yml +46 -0
  33. data/spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_an_array.yml +46 -0
  34. data/spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_nil_if_there_are_no_agent_requirements_defined.yml +46 -0
  35. data/spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_fetch_the_build_configuration_artifact_dependencies_for_a_buildtype.yml +46 -0
  36. data/spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_an_array.yml +46 -0
  37. data/spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_nil_if_there_are_no_artifact_dependencies_defined.yml +46 -0
  38. data/spec/cassettes/BuildTypes/GET/_buildtype_branches/should_fetch_vcs_branches_the_vcs_root_is_configured_to_use.yml +46 -0
  39. data/spec/cassettes/BuildTypes/GET/_buildtype_features/should_fetch_the_build_configuration_features_for_a_buildtype.yml +46 -0
  40. data/spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_an_array.yml +46 -0
  41. data/spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_nil_if_there_are_no_features_defined.yml +46 -0
  42. data/spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_get_investigation_details.yml +48 -0
  43. data/spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_return_nil_if_no_one_is_investigating.yml +46 -0
  44. data/spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_fetch_the_build_configuration_parameters_for_a_buildtype.yml +46 -0
  45. data/spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_an_array.yml +46 -0
  46. data/spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_nil_if_there_are_no_parameters_defined.yml +46 -0
  47. data/spec/cassettes/BuildTypes/GET/_buildtype_settings/should_fetch_the_settings_for_a_given_buildtype.yml +89 -0
  48. data/spec/cassettes/BuildTypes/GET/_buildtype_settings/should_return_an_array.yml +89 -0
  49. data/spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_fetch_the_build_configuration_snapshot_dependencies_for_a_buildtype.yml +46 -0
  50. data/spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_an_array.yml +46 -0
  51. data/spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_nil_if_there_are_no_snapshot_dependencies_defined.yml +46 -0
  52. data/spec/cassettes/BuildTypes/GET/_buildtype_state/should_fetch_the_state_of_the_buildtype.yml +89 -0
  53. data/spec/cassettes/BuildTypes/GET/_buildtype_steps/should_fetch_the_build_configuration_steps_for_a_buildtype.yml +47 -0
  54. data/spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_an_array.yml +46 -0
  55. data/spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_nil_if_there_are_no_steps_defined.yml +46 -0
  56. data/spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_nil_if_the_buildtype_is_not_associated_with_a_template.yml +52 -0
  57. data/spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_the_attributes_of_the_associated_template.yml +46 -0
  58. data/spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_fetch_the_build_configuration_triggers_for_a_buildtype.yml +46 -0
  59. data/spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_an_array.yml +46 -0
  60. data/spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_nil_if_there_are_no_triggers_defined.yml +46 -0
  61. data/spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_fetch_the_build_configuration_vcs_root_entries_for_a_buildtype.yml +47 -0
  62. data/spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_an_array.yml +47 -0
  63. data/spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_nil_if_there_are_no_vcs_root_entries_defined.yml +46 -0
  64. data/spec/cassettes/BuildTypes/GET/_buildtypes/should_fetch_all_the_buildtypes.yml +46 -0
  65. data/spec/cassettes/BuildTypes/POST/_attach_vcs_root/should_attach_a_vcs_root_to_a_buildtype.yml +47 -0
  66. data/spec/cassettes/BuildTypes/POST/_create_agent_requirement/should_create_an_agent_requirement_for_a_buildtype.yml +46 -0
  67. data/spec/cassettes/BuildTypes/POST/_create_build_step/should_create_a_build_step_for_a_given_build_type.yml +46 -0
  68. data/spec/cassettes/BuildTypes/POST/_create_build_trigger/should_create_a_build_trigger_for_a_given_build_type.yml +46 -0
  69. data/spec/cassettes/BuildTypes/POST/_create_buildtype/should_create_a_build_type.yml +86 -0
  70. data/spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_disable_a_build_step.yml +44 -0
  71. data/spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_enable_a_build_step.yml +48 -0
  72. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_pause_a_project.yml +44 -0
  73. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_a_projects_description.yml +44 -0
  74. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_the_buildtype_name.yml +44 -0
  75. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_parameter/should_set_a_buildtype_parameter.yml +44 -0
  76. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_if_it_should_perform_clean_builds.yml +46 -0
  77. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_what_is_the_timeout_in_minutes_when_executing_builds.yml +46 -0
  78. data/spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_where_the_checkout_happens_when_building.yml +46 -0
  79. data/spec/cassettes/Builds/DELETE/_unpin_build/should_unpin_a_build.yml +83 -0
  80. data/spec/cassettes/Builds/GET/_build/should_fetch_the_build_details.yml +91 -0
  81. data/spec/cassettes/Builds/GET/_build/should_raise_an_error_if_the_build_does_not_exist.yml +53 -0
  82. data/spec/cassettes/Builds/GET/_build_artifacts/should_fetch_all_the_artifacts.yml +89 -0
  83. data/spec/cassettes/Builds/GET/_build_pinned_/should_return_false_when_a_build_is_not_pinned.yml +126 -0
  84. data/spec/cassettes/Builds/GET/_build_pinned_/should_return_true_when_a_build_is_pinned.yml +126 -0
  85. data/spec/cassettes/Builds/GET/_build_statistics/should_return_statistics_for_a_build.yml +89 -0
  86. data/spec/cassettes/Builds/GET/_build_tags/should_fetch_the_build_tags.yml +89 -0
  87. 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
  88. data/spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_by_multiple_build_locators.yml +46 -0
  89. data/spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_results_by_build_locators.yml +46 -0
  90. data/spec/cassettes/Builds/GET/_builds/should_fetch_all_the_builds.yml +46 -0
  91. data/spec/cassettes/Builds/GET/_builds/should_return_an_empty_array_if_no_results_are_found.yml +46 -0
  92. data/spec/cassettes/Builds/PUT/_pin_build/should_pin_a_build.yml +83 -0
  93. data/spec/cassettes/Projects/DELETE/_delete_project/should_delete_a_project.yml +82 -0
  94. data/spec/cassettes/Projects/DELETE/_delete_project_parameter/should_delete_a_project_parameter.yml +123 -0
  95. data/spec/cassettes/Projects/GET/_parent_project/should_fetch_the_parent_project_for_a_given_project.yml +46 -0
  96. data/spec/cassettes/Projects/GET/_parent_project/should_return_nil_if_there_is_no_parent_project_for_a_given_project.yml +46 -0
  97. data/spec/cassettes/Projects/GET/_project/should_fetch_a_single_project_by_id.yml +47 -0
  98. data/spec/cassettes/Projects/GET/_project/should_raise_an_error_if_the_project_does_not_exist.yml +52 -0
  99. data/spec/cassettes/Projects/GET/_project_buildtypes/should_fetch_all_the_buildTypes_for_a_project.yml +46 -0
  100. data/spec/cassettes/Projects/GET/_project_buildtypes/should_return_nil_if_the_project_does_not_have_any_build_types.yml +46 -0
  101. data/spec/cassettes/Projects/GET/_project_parameters/should_fetch_all_the_paramters_for_a_given_project.yml +46 -0
  102. data/spec/cassettes/Projects/GET/_project_parameters/should_return_nil_if_there_are_no_parameters_defined_for_a_project.yml +46 -0
  103. data/spec/cassettes/Projects/GET/_projects/should_fetch_projects.yml +46 -0
  104. data/spec/cassettes/Projects/POST/_copy_project/should_copy_a_project.yml +135 -0
  105. data/spec/cassettes/Projects/POST/_create_project/should_create_a_project.yml +45 -0
  106. data/spec/cassettes/Projects/PUT/_set_parent_project/should_set_a_parent_project_for_a_given_project.yml +134 -0
  107. data/spec/cassettes/Projects/PUT/_set_project_field/should_archive_a_project.yml +86 -0
  108. data/spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_description.yml +86 -0
  109. data/spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_name.yml +86 -0
  110. data/spec/cassettes/Projects/PUT/_set_project_parameter/should_set_a_project_parameter.yml +86 -0
  111. data/spec/cassettes/Tests/GET/_tests/should_allow_you_to_filter_by_test_id.yml +49 -0
  112. data/spec/cassettes/Tests/GET/_tests/should_allow_you_to_filter_results_by_test_count_locator.yml +55 -0
  113. data/spec/cassettes/Tests/GET/_tests/should_fetch_all_the_tests.yml +60 -0
  114. data/spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_no_build_is_found.yml +51 -0
  115. data/spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_no_test_is_found.yml +51 -0
  116. data/spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_not_build_is_given.yml +51 -0
  117. data/spec/cassettes/VCSRoots/GET/_vcs_root_details/should_fetch_the_vcs_root_details.yml +91 -0
  118. data/spec/cassettes/VCSRoots/GET/_vcs_roots/should_fetch_vcs_roots.yml +47 -0
  119. data/spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_git_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml +89 -0
  120. data/spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_subversion_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml +89 -0
  121. data/spec/cassettes/VCSRoots/PUT/_set_vcs_root_field/should_set_a_vcs_modification_check_interval.yml +179 -0
  122. data/spec/faraday/null_response_body_spec.rb +18 -0
  123. data/spec/spec_helper.rb +22 -0
  124. data/spec/support/vcr_setup.rb +9 -0
  125. data/spec/teamcity/api_spec.rb +64 -0
  126. data/spec/teamcity/client/builds_spec.rb +113 -0
  127. data/spec/teamcity/client/buildtypes_spec.rb +308 -0
  128. data/spec/teamcity/client/projects_spec.rb +207 -0
  129. data/spec/teamcity/client/tests_spec.rb +47 -0
  130. data/spec/teamcity/client/vcs_roots_spec.rb +86 -0
  131. data/spec/teamcity/client_spec.rb +14 -0
  132. data/spec/teamcity/element_builder_spec.rb +30 -0
  133. data/spec/teamcity/headers_spec.rb +43 -0
  134. data/spec/teamcity/version_spec.rb +7 -0
  135. data/spec/teamcity_spec.rb +89 -0
  136. data/teamcity.gemspec +26 -0
  137. metadata +344 -0
@@ -0,0 +1,47 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe 'Tests' do
4
+
5
+ before(:each) do
6
+ @tc = TeamCity
7
+ # configure_client_with_authentication_apm
8
+ configure_client_with_authentication
9
+ end
10
+
11
+ # Get requests
12
+ describe 'GET', :vcr do
13
+
14
+ describe '.tests' do
15
+ it 'should fetch all the tests' do
16
+ tests = @tc.tests(build: 2614725)
17
+ tests.should have(9).items
18
+ end
19
+
20
+ it 'should allow you to filter results by test count locator' do
21
+ @tc.tests(build: 2614725, count:1).should have(1).items
22
+ end
23
+
24
+ it 'should allow you to filter by test id' do
25
+ @tc.tests(build: 2614725, id: 143).should have(1).items
26
+ end
27
+
28
+ it 'should return an empty array if no test is found' do
29
+ tests = @tc.tests(build: 2614725, id: 1433333)
30
+ tests.should be_empty
31
+ tests.class.should == Array
32
+ end
33
+
34
+ it 'should return an empty array if no build is found' do
35
+ tests = @tc.tests(build: 9999999)
36
+ tests.should be_empty
37
+ tests.class.should == Array
38
+ end
39
+
40
+ it 'should return an empty array if not build is given' do
41
+ tests = @tc.tests
42
+ tests.should be_empty
43
+ tests.class.should == Array
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,86 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe 'VCSRoots' do
4
+
5
+ before(:each) do
6
+ @tc = TeamCity
7
+ configure_client_with_authentication
8
+ end
9
+
10
+ # GET requests
11
+ describe 'GET', :vcr do
12
+ describe '.vcs_roots' do
13
+ it 'should fetch vcs roots' do
14
+ @tc.vcs_roots.should have_at_least(1).items
15
+ end
16
+ end
17
+
18
+ describe '.vcs_root_details' do
19
+ it 'should fetch the vcs root details' do
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)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe 'POST', :vcr do
28
+ describe '.create_vcs_root' do
29
+ it 'should create a git vcs root that is shared with the project and sub-projects' do
30
+ project_id = @tc.projects[1].id
31
+ vcs_name = 'PostCreateVCSRootGit'
32
+ vcs_type = 'git'
33
+ response = @tc.create_vcs_root(vcs_name: vcs_name, vcs_type: vcs_type, project_id: project_id) do |properties|
34
+ properties['branch'] = 'master'
35
+ properties['url'] = 'git@github.com:jperry/teamcity-ruby-client.git'
36
+ properties['authMethod'] = 'PRIVATE_KEY_DEFAULT'
37
+ properties['ignoreKnownHosts'] = true
38
+ end
39
+ response.name.should eq(vcs_name)
40
+ response.vcsName.should match(/#{vcs_type}/)
41
+ end
42
+
43
+ it 'should create a subversion vcs root that is shared with the project and sub-projects' do
44
+ project_id = @tc.projects[1].id
45
+ vcs_name = 'PostCreateVCSRootSvn'
46
+ vcs_type = 'svn'
47
+ response = @tc.create_vcs_root(vcs_name: vcs_name, vcs_type: vcs_type, project_id: project_id) do |properties|
48
+ properties['branch'] = 'master'
49
+ properties['url'] = 'http://svn.example.com/jperry/teamcity-ruby-client'
50
+ properties['authMethod'] = 'PRIVATE_KEY_DEFAULT'
51
+ properties['ignoreKnownHosts'] = true
52
+ end
53
+ response.name.should eq(vcs_name)
54
+ response.vcsName.should match(/#{vcs_type}/)
55
+ end
56
+ end
57
+ end
58
+
59
+ describe 'PUT', :vcr do
60
+
61
+ describe '.set_vcs_root_field' do
62
+ it 'should set a vcs modification check interval' do
63
+ vcs_root_name = 'PutSetCheckIntervalField'
64
+ project = @tc.projects[1]
65
+ @tc.create_vcs_root(vcs_name: vcs_root_name,
66
+ vcs_type: 'git',
67
+ project_id: project.id) do |properties|
68
+ properties['branch'] = 'master'
69
+ properties['url'] = 'git@github.com:jperry/teamcity-ruby-client.git'
70
+ properties['authMethod'] = 'PRIVATE_KEY_DEFAULT'
71
+ properties['ignoreKnownHosts'] = true
72
+ end
73
+
74
+ vcs_root_id = project.id + "_" + vcs_root_name
75
+
76
+ field_value = 86400
77
+ @tc.set_vcs_root_field(vcs_root_id,
78
+ 'modificationCheckInterval',
79
+ field_value.to_s).should eq(field_value.to_s)
80
+
81
+ vcs = @tc.vcs_root_details(vcs_root_id)
82
+ vcs.modificationCheckInterval.should eq(field_value)
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe TeamCity::Client do
4
+ before(:each) do
5
+ configure_client_with_authentication
6
+ end
7
+
8
+ it "should connect using the endpoint configuration" do
9
+ client = TeamCity::Client.new
10
+ endpoint = URI.parse(client.endpoint)
11
+ connection = client.send(:connection).build_url(nil).to_s
12
+ connection.should eq(endpoint.to_s)
13
+ end
14
+ end
@@ -0,0 +1,30 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+ require_relative '../spec_helper'
3
+
4
+ describe TeamCity::ElementBuilder do
5
+ it 'outputs json following TeamCity convention for elements and properties' do
6
+ builder = TeamCity::ElementBuilder.new(:attr1 => 'x') do |properties|
7
+ properties['property1'] = 'z'
8
+ end
9
+
10
+ builder.to_request_body.should == {
11
+ :attr1 => 'x',
12
+ :properties => {
13
+ :property => [
14
+ {
15
+ :name => 'property1',
16
+ :value => 'z'
17
+ }
18
+ ]
19
+ }
20
+ }.to_json
21
+ end
22
+
23
+ it 'outputs json following TeamCity convention for elements even if no properties are defined' do
24
+ builder = TeamCity::ElementBuilder.new(:attr1 => 'x')
25
+
26
+ builder.to_request_body.should == {
27
+ :attr1 => 'x'
28
+ }.to_json
29
+ end
30
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe TeamCity::Headers do
4
+
5
+ def build_headers(*args)
6
+ TeamCity::Headers.build(*args)
7
+ end
8
+
9
+ it "should default the accept header to json" do
10
+ build_headers.accept.should eq("application/json; charset=utf-8")
11
+ end
12
+
13
+ it "should default the content_type header to json" do
14
+ build_headers.content_type.should eq("application/json")
15
+ end
16
+
17
+ it "should allow you to set the accept" do
18
+ build_headers(:accept => :text).accept.should eq("text/plain")
19
+ end
20
+
21
+ it "should not set the content_type when setting accept" do
22
+ build_headers(:accept => :text).content_type.should eq("application/json")
23
+ end
24
+
25
+ it "should allow you to set the content type" do
26
+ build_headers(:content_type => :text).content_type.should eq("text/plain")
27
+ end
28
+
29
+ it "should not allow an invalid accept format" do
30
+ expect { build_headers(:accept => :invalid) }.to raise_exception(ArgumentError)
31
+ end
32
+
33
+ it "should not allow an invalid content_type format" do
34
+ expect { build_headers(:content_type => :invalid) }.to raise_exception(ArgumentError)
35
+ end
36
+
37
+ it "should return a hash of headers" do
38
+ build_headers.to_hash.should eq({
39
+ 'Accept' => 'application/json; charset=utf-8',
40
+ 'Content-Type' => 'application/json'
41
+ })
42
+ end
43
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Version' do
4
+ it 'should be defined' do
5
+ TeamCity::VERSION.should match(/\d\.\d\.\d/)
6
+ end
7
+ end
@@ -0,0 +1,89 @@
1
+ require "spec_helper.rb"
2
+
3
+ describe TeamCity do
4
+ before(:each) do
5
+ TeamCity.reset
6
+ end
7
+
8
+ describe ".client" do
9
+ it "should be a TeamCity::Client" do
10
+ TeamCity.client.should be_a TeamCity::Client
11
+ end
12
+ end
13
+
14
+ describe ".adapter" do
15
+ it "should return the default adapter" do
16
+ TeamCity.adapter.should == TeamCity::Configuration::DEFAULT_ADAPTER
17
+ end
18
+ end
19
+
20
+ describe ".adapter=" do
21
+ it "should set the adapter" do
22
+ TeamCity.adapter = :faraday
23
+ TeamCity.adapter.should == :faraday
24
+ end
25
+ end
26
+
27
+ describe ".http_user" do
28
+ it "should return the default http_user" do
29
+ TeamCity.http_user.should == TeamCity::Configuration::DEFAULT_HTTP_USER
30
+ end
31
+ end
32
+
33
+ describe ".http_user=" do
34
+ it "should set the http_user" do
35
+ TeamCity.http_user = 'test-user'
36
+ TeamCity.http_user.should == 'test-user'
37
+ end
38
+ end
39
+
40
+ describe ".http_password" do
41
+ it "should return the default http_password" do
42
+ TeamCity.http_password.should == TeamCity::Configuration::DEFAULT_HTTP_PASSWORD
43
+ end
44
+ end
45
+
46
+ describe ".http_password=" do
47
+ it "should set the http_password" do
48
+ TeamCity.http_password = 'test-pass'
49
+ TeamCity.http_password.should == 'test-pass'
50
+ end
51
+ end
52
+
53
+ describe ".endpoint" do
54
+ it "should return the default endpoint" do
55
+ TeamCity.endpoint.should == TeamCity::Configuration::DEFAULT_ENDPOINT
56
+ end
57
+ end
58
+
59
+ describe ".endpoint=" do
60
+ it "should set the endpoint" do
61
+ TeamCity.endpoint = "http://teamcity.mydomain.net:8111"
62
+ TeamCity.endpoint.should == "http://teamcity.mydomain.net:8111"
63
+ end
64
+ end
65
+
66
+ describe ".user_agent" do
67
+ it "should return the default user agent" do
68
+ TeamCity.user_agent.should == TeamCity::Configuration::DEFAULT_USER_AGENT
69
+ end
70
+ end
71
+
72
+ describe ".user_agent=" do
73
+ it "should set the user_agent" do
74
+ TeamCity.user_agent = "My User Agent"
75
+ TeamCity.user_agent.should == "My User Agent"
76
+ end
77
+ end
78
+
79
+ describe ".configure" do
80
+ TeamCity::Configuration::VALID_OPTIONS_KEYS.each do |key|
81
+ it "should set the #{key}" do
82
+ TeamCity.configure do |config|
83
+ config.send("#{key}=", key)
84
+ TeamCity.send(key).should == key
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
data/teamcity.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'teamcity/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "teamcity"
8
+ gem.version = TeamCity::VERSION
9
+ gem.authors = ['Jason Perry']
10
+ gem.email = ['bosoxjay@gmail.com']
11
+ gem.description = %q{A Ruby wrapper for the TeamCity Rest API}
12
+ gem.summary = %q{Ruby wrapper for the TeamCity API}
13
+ gem.homepage = 'https://github.com/jetthoughts/teamcity-ruby-client'
14
+ gem.licenses = ['MIT']
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ['lib']
20
+
21
+ # Dependencies
22
+ gem.add_development_dependency('rake')
23
+ gem.add_runtime_dependency('faraday', '~> 0.12.0')
24
+ gem.add_runtime_dependency('faraday_middleware')
25
+ gem.add_runtime_dependency('hashie', '>= 2.0')
26
+ end
metadata ADDED
@@ -0,0 +1,344 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: teamcity
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.1
5
+ platform: ruby
6
+ authors:
7
+ - Jason Perry
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.12.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.12.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday_middleware
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hashie
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ description: A Ruby wrapper for the TeamCity Rest API
70
+ email:
71
+ - bosoxjay@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".travis.yml"
78
+ - ".yardopts"
79
+ - CHANGELOG.md
80
+ - Gemfile
81
+ - Guardfile
82
+ - LICENSE.txt
83
+ - README.md
84
+ - Rakefile
85
+ - lib/faraday/null_response_body.rb
86
+ - lib/teamcity.rb
87
+ - lib/teamcity/api.rb
88
+ - lib/teamcity/client.rb
89
+ - lib/teamcity/client/build_types.rb
90
+ - lib/teamcity/client/builds.rb
91
+ - lib/teamcity/client/common.rb
92
+ - lib/teamcity/client/projects.rb
93
+ - lib/teamcity/client/tests.rb
94
+ - lib/teamcity/client/vcs_roots.rb
95
+ - lib/teamcity/configuration.rb
96
+ - lib/teamcity/connection.rb
97
+ - lib/teamcity/element_builder.rb
98
+ - lib/teamcity/headers.rb
99
+ - lib/teamcity/request.rb
100
+ - lib/teamcity/version.rb
101
+ - spec/cassettes/BuildTypes/DELETE/_delete_agent_requirement/should_delete_the_agent_requirement.yml
102
+ - spec/cassettes/BuildTypes/DELETE/_delete_buildtype/should_delete_a_buildtype.yml
103
+ - spec/cassettes/BuildTypes/DELETE/_delete_buildtype_parameter/should_delete_a_buildtype_parameter.yml
104
+ - spec/cassettes/BuildTypes/GET/_buildtype/should_fetch_the_details_of_a_buildtype_by_id.yml
105
+ - spec/cassettes/BuildTypes/GET/_buildtype/should_raise_an_error_if_the_buildtype_does_not_exist.yml
106
+ - spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_fetch_the_build_configuration_agent_requirements_for_a_buildtype.yml
107
+ - spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_an_array.yml
108
+ - spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_nil_if_there_are_no_agent_requirements_defined.yml
109
+ - spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_fetch_the_build_configuration_artifact_dependencies_for_a_buildtype.yml
110
+ - spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_an_array.yml
111
+ - spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_nil_if_there_are_no_artifact_dependencies_defined.yml
112
+ - spec/cassettes/BuildTypes/GET/_buildtype_branches/should_fetch_vcs_branches_the_vcs_root_is_configured_to_use.yml
113
+ - spec/cassettes/BuildTypes/GET/_buildtype_features/should_fetch_the_build_configuration_features_for_a_buildtype.yml
114
+ - spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_an_array.yml
115
+ - spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_nil_if_there_are_no_features_defined.yml
116
+ - spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_get_investigation_details.yml
117
+ - spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_return_nil_if_no_one_is_investigating.yml
118
+ - spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_fetch_the_build_configuration_parameters_for_a_buildtype.yml
119
+ - spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_an_array.yml
120
+ - spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_nil_if_there_are_no_parameters_defined.yml
121
+ - spec/cassettes/BuildTypes/GET/_buildtype_settings/should_fetch_the_settings_for_a_given_buildtype.yml
122
+ - spec/cassettes/BuildTypes/GET/_buildtype_settings/should_return_an_array.yml
123
+ - spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_fetch_the_build_configuration_snapshot_dependencies_for_a_buildtype.yml
124
+ - spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_an_array.yml
125
+ - spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_nil_if_there_are_no_snapshot_dependencies_defined.yml
126
+ - spec/cassettes/BuildTypes/GET/_buildtype_state/should_fetch_the_state_of_the_buildtype.yml
127
+ - spec/cassettes/BuildTypes/GET/_buildtype_steps/should_fetch_the_build_configuration_steps_for_a_buildtype.yml
128
+ - spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_an_array.yml
129
+ - spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_nil_if_there_are_no_steps_defined.yml
130
+ - spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_nil_if_the_buildtype_is_not_associated_with_a_template.yml
131
+ - spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_the_attributes_of_the_associated_template.yml
132
+ - spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_fetch_the_build_configuration_triggers_for_a_buildtype.yml
133
+ - spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_an_array.yml
134
+ - spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_nil_if_there_are_no_triggers_defined.yml
135
+ - spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_fetch_the_build_configuration_vcs_root_entries_for_a_buildtype.yml
136
+ - spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_an_array.yml
137
+ - spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_nil_if_there_are_no_vcs_root_entries_defined.yml
138
+ - spec/cassettes/BuildTypes/GET/_buildtypes/should_fetch_all_the_buildtypes.yml
139
+ - spec/cassettes/BuildTypes/POST/_attach_vcs_root/should_attach_a_vcs_root_to_a_buildtype.yml
140
+ - spec/cassettes/BuildTypes/POST/_create_agent_requirement/should_create_an_agent_requirement_for_a_buildtype.yml
141
+ - spec/cassettes/BuildTypes/POST/_create_build_step/should_create_a_build_step_for_a_given_build_type.yml
142
+ - spec/cassettes/BuildTypes/POST/_create_build_trigger/should_create_a_build_trigger_for_a_given_build_type.yml
143
+ - spec/cassettes/BuildTypes/POST/_create_buildtype/should_create_a_build_type.yml
144
+ - spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_disable_a_build_step.yml
145
+ - spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_enable_a_build_step.yml
146
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_pause_a_project.yml
147
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_a_projects_description.yml
148
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_the_buildtype_name.yml
149
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_parameter/should_set_a_buildtype_parameter.yml
150
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_if_it_should_perform_clean_builds.yml
151
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_what_is_the_timeout_in_minutes_when_executing_builds.yml
152
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_where_the_checkout_happens_when_building.yml
153
+ - spec/cassettes/Builds/DELETE/_unpin_build/should_unpin_a_build.yml
154
+ - spec/cassettes/Builds/GET/_build/should_fetch_the_build_details.yml
155
+ - spec/cassettes/Builds/GET/_build/should_raise_an_error_if_the_build_does_not_exist.yml
156
+ - spec/cassettes/Builds/GET/_build_artifacts/should_fetch_all_the_artifacts.yml
157
+ - spec/cassettes/Builds/GET/_build_pinned_/should_return_false_when_a_build_is_not_pinned.yml
158
+ - spec/cassettes/Builds/GET/_build_pinned_/should_return_true_when_a_build_is_pinned.yml
159
+ - spec/cassettes/Builds/GET/_build_statistics/should_return_statistics_for_a_build.yml
160
+ - spec/cassettes/Builds/GET/_build_tags/should_fetch_the_build_tags.yml
161
+ - spec/cassettes/Builds/GET/_build_tags/should_return_an_empty_array_if_there_are_no_build_tags_defined_for_a_build.yml
162
+ - spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_by_multiple_build_locators.yml
163
+ - spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_results_by_build_locators.yml
164
+ - spec/cassettes/Builds/GET/_builds/should_fetch_all_the_builds.yml
165
+ - spec/cassettes/Builds/GET/_builds/should_return_an_empty_array_if_no_results_are_found.yml
166
+ - spec/cassettes/Builds/PUT/_pin_build/should_pin_a_build.yml
167
+ - spec/cassettes/Projects/DELETE/_delete_project/should_delete_a_project.yml
168
+ - spec/cassettes/Projects/DELETE/_delete_project_parameter/should_delete_a_project_parameter.yml
169
+ - spec/cassettes/Projects/GET/_parent_project/should_fetch_the_parent_project_for_a_given_project.yml
170
+ - spec/cassettes/Projects/GET/_parent_project/should_return_nil_if_there_is_no_parent_project_for_a_given_project.yml
171
+ - spec/cassettes/Projects/GET/_project/should_fetch_a_single_project_by_id.yml
172
+ - spec/cassettes/Projects/GET/_project/should_raise_an_error_if_the_project_does_not_exist.yml
173
+ - spec/cassettes/Projects/GET/_project_buildtypes/should_fetch_all_the_buildTypes_for_a_project.yml
174
+ - spec/cassettes/Projects/GET/_project_buildtypes/should_return_nil_if_the_project_does_not_have_any_build_types.yml
175
+ - spec/cassettes/Projects/GET/_project_parameters/should_fetch_all_the_paramters_for_a_given_project.yml
176
+ - spec/cassettes/Projects/GET/_project_parameters/should_return_nil_if_there_are_no_parameters_defined_for_a_project.yml
177
+ - spec/cassettes/Projects/GET/_projects/should_fetch_projects.yml
178
+ - spec/cassettes/Projects/POST/_copy_project/should_copy_a_project.yml
179
+ - spec/cassettes/Projects/POST/_create_project/should_create_a_project.yml
180
+ - spec/cassettes/Projects/PUT/_set_parent_project/should_set_a_parent_project_for_a_given_project.yml
181
+ - spec/cassettes/Projects/PUT/_set_project_field/should_archive_a_project.yml
182
+ - spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_description.yml
183
+ - spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_name.yml
184
+ - spec/cassettes/Projects/PUT/_set_project_parameter/should_set_a_project_parameter.yml
185
+ - spec/cassettes/Tests/GET/_tests/should_allow_you_to_filter_by_test_id.yml
186
+ - spec/cassettes/Tests/GET/_tests/should_allow_you_to_filter_results_by_test_count_locator.yml
187
+ - spec/cassettes/Tests/GET/_tests/should_fetch_all_the_tests.yml
188
+ - spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_no_build_is_found.yml
189
+ - spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_no_test_is_found.yml
190
+ - spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_not_build_is_given.yml
191
+ - spec/cassettes/VCSRoots/GET/_vcs_root_details/should_fetch_the_vcs_root_details.yml
192
+ - spec/cassettes/VCSRoots/GET/_vcs_roots/should_fetch_vcs_roots.yml
193
+ - spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_git_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml
194
+ - spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_subversion_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml
195
+ - spec/cassettes/VCSRoots/PUT/_set_vcs_root_field/should_set_a_vcs_modification_check_interval.yml
196
+ - spec/faraday/null_response_body_spec.rb
197
+ - spec/spec_helper.rb
198
+ - spec/support/vcr_setup.rb
199
+ - spec/teamcity/api_spec.rb
200
+ - spec/teamcity/client/builds_spec.rb
201
+ - spec/teamcity/client/buildtypes_spec.rb
202
+ - spec/teamcity/client/projects_spec.rb
203
+ - spec/teamcity/client/tests_spec.rb
204
+ - spec/teamcity/client/vcs_roots_spec.rb
205
+ - spec/teamcity/client_spec.rb
206
+ - spec/teamcity/element_builder_spec.rb
207
+ - spec/teamcity/headers_spec.rb
208
+ - spec/teamcity/version_spec.rb
209
+ - spec/teamcity_spec.rb
210
+ - teamcity.gemspec
211
+ homepage: https://github.com/jetthoughts/teamcity-ruby-client
212
+ licenses:
213
+ - MIT
214
+ metadata: {}
215
+ post_install_message:
216
+ rdoc_options: []
217
+ require_paths:
218
+ - lib
219
+ required_ruby_version: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ required_rubygems_version: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ requirements: []
230
+ rubyforge_project:
231
+ rubygems_version: 2.6.12
232
+ signing_key:
233
+ specification_version: 4
234
+ summary: Ruby wrapper for the TeamCity API
235
+ test_files:
236
+ - spec/cassettes/BuildTypes/DELETE/_delete_agent_requirement/should_delete_the_agent_requirement.yml
237
+ - spec/cassettes/BuildTypes/DELETE/_delete_buildtype/should_delete_a_buildtype.yml
238
+ - spec/cassettes/BuildTypes/DELETE/_delete_buildtype_parameter/should_delete_a_buildtype_parameter.yml
239
+ - spec/cassettes/BuildTypes/GET/_buildtype/should_fetch_the_details_of_a_buildtype_by_id.yml
240
+ - spec/cassettes/BuildTypes/GET/_buildtype/should_raise_an_error_if_the_buildtype_does_not_exist.yml
241
+ - spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_fetch_the_build_configuration_agent_requirements_for_a_buildtype.yml
242
+ - spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_an_array.yml
243
+ - spec/cassettes/BuildTypes/GET/_buildtype_agent_requirements/should_return_nil_if_there_are_no_agent_requirements_defined.yml
244
+ - spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_fetch_the_build_configuration_artifact_dependencies_for_a_buildtype.yml
245
+ - spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_an_array.yml
246
+ - spec/cassettes/BuildTypes/GET/_buildtype_artifact_dependencies/should_return_nil_if_there_are_no_artifact_dependencies_defined.yml
247
+ - spec/cassettes/BuildTypes/GET/_buildtype_branches/should_fetch_vcs_branches_the_vcs_root_is_configured_to_use.yml
248
+ - spec/cassettes/BuildTypes/GET/_buildtype_features/should_fetch_the_build_configuration_features_for_a_buildtype.yml
249
+ - spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_an_array.yml
250
+ - spec/cassettes/BuildTypes/GET/_buildtype_features/should_return_nil_if_there_are_no_features_defined.yml
251
+ - spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_get_investigation_details.yml
252
+ - spec/cassettes/BuildTypes/GET/_buildtype_investigations/should_return_nil_if_no_one_is_investigating.yml
253
+ - spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_fetch_the_build_configuration_parameters_for_a_buildtype.yml
254
+ - spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_an_array.yml
255
+ - spec/cassettes/BuildTypes/GET/_buildtype_parameters/should_return_nil_if_there_are_no_parameters_defined.yml
256
+ - spec/cassettes/BuildTypes/GET/_buildtype_settings/should_fetch_the_settings_for_a_given_buildtype.yml
257
+ - spec/cassettes/BuildTypes/GET/_buildtype_settings/should_return_an_array.yml
258
+ - spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_fetch_the_build_configuration_snapshot_dependencies_for_a_buildtype.yml
259
+ - spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_an_array.yml
260
+ - spec/cassettes/BuildTypes/GET/_buildtype_snapshot_dependencies/should_return_nil_if_there_are_no_snapshot_dependencies_defined.yml
261
+ - spec/cassettes/BuildTypes/GET/_buildtype_state/should_fetch_the_state_of_the_buildtype.yml
262
+ - spec/cassettes/BuildTypes/GET/_buildtype_steps/should_fetch_the_build_configuration_steps_for_a_buildtype.yml
263
+ - spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_an_array.yml
264
+ - spec/cassettes/BuildTypes/GET/_buildtype_steps/should_return_nil_if_there_are_no_steps_defined.yml
265
+ - spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_nil_if_the_buildtype_is_not_associated_with_a_template.yml
266
+ - spec/cassettes/BuildTypes/GET/_buildtype_template/should_return_the_attributes_of_the_associated_template.yml
267
+ - spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_fetch_the_build_configuration_triggers_for_a_buildtype.yml
268
+ - spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_an_array.yml
269
+ - spec/cassettes/BuildTypes/GET/_buildtype_triggers/should_return_nil_if_there_are_no_triggers_defined.yml
270
+ - spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_fetch_the_build_configuration_vcs_root_entries_for_a_buildtype.yml
271
+ - spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_an_array.yml
272
+ - spec/cassettes/BuildTypes/GET/_buildtype_vcs_root_entries/should_return_nil_if_there_are_no_vcs_root_entries_defined.yml
273
+ - spec/cassettes/BuildTypes/GET/_buildtypes/should_fetch_all_the_buildtypes.yml
274
+ - spec/cassettes/BuildTypes/POST/_attach_vcs_root/should_attach_a_vcs_root_to_a_buildtype.yml
275
+ - spec/cassettes/BuildTypes/POST/_create_agent_requirement/should_create_an_agent_requirement_for_a_buildtype.yml
276
+ - spec/cassettes/BuildTypes/POST/_create_build_step/should_create_a_build_step_for_a_given_build_type.yml
277
+ - spec/cassettes/BuildTypes/POST/_create_build_trigger/should_create_a_build_trigger_for_a_given_build_type.yml
278
+ - spec/cassettes/BuildTypes/POST/_create_buildtype/should_create_a_build_type.yml
279
+ - spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_disable_a_build_step.yml
280
+ - spec/cassettes/BuildTypes/PUT/_set_build_step_field/should_enable_a_build_step.yml
281
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_pause_a_project.yml
282
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_a_projects_description.yml
283
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_field/should_set_the_buildtype_name.yml
284
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_parameter/should_set_a_buildtype_parameter.yml
285
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_if_it_should_perform_clean_builds.yml
286
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_what_is_the_timeout_in_minutes_when_executing_builds.yml
287
+ - spec/cassettes/BuildTypes/PUT/_set_buildtype_setting/should_set_where_the_checkout_happens_when_building.yml
288
+ - spec/cassettes/Builds/DELETE/_unpin_build/should_unpin_a_build.yml
289
+ - spec/cassettes/Builds/GET/_build/should_fetch_the_build_details.yml
290
+ - spec/cassettes/Builds/GET/_build/should_raise_an_error_if_the_build_does_not_exist.yml
291
+ - spec/cassettes/Builds/GET/_build_artifacts/should_fetch_all_the_artifacts.yml
292
+ - spec/cassettes/Builds/GET/_build_pinned_/should_return_false_when_a_build_is_not_pinned.yml
293
+ - spec/cassettes/Builds/GET/_build_pinned_/should_return_true_when_a_build_is_pinned.yml
294
+ - spec/cassettes/Builds/GET/_build_statistics/should_return_statistics_for_a_build.yml
295
+ - spec/cassettes/Builds/GET/_build_tags/should_fetch_the_build_tags.yml
296
+ - spec/cassettes/Builds/GET/_build_tags/should_return_an_empty_array_if_there_are_no_build_tags_defined_for_a_build.yml
297
+ - spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_by_multiple_build_locators.yml
298
+ - spec/cassettes/Builds/GET/_builds/should_allow_you_to_filter_results_by_build_locators.yml
299
+ - spec/cassettes/Builds/GET/_builds/should_fetch_all_the_builds.yml
300
+ - spec/cassettes/Builds/GET/_builds/should_return_an_empty_array_if_no_results_are_found.yml
301
+ - spec/cassettes/Builds/PUT/_pin_build/should_pin_a_build.yml
302
+ - spec/cassettes/Projects/DELETE/_delete_project/should_delete_a_project.yml
303
+ - spec/cassettes/Projects/DELETE/_delete_project_parameter/should_delete_a_project_parameter.yml
304
+ - spec/cassettes/Projects/GET/_parent_project/should_fetch_the_parent_project_for_a_given_project.yml
305
+ - spec/cassettes/Projects/GET/_parent_project/should_return_nil_if_there_is_no_parent_project_for_a_given_project.yml
306
+ - spec/cassettes/Projects/GET/_project/should_fetch_a_single_project_by_id.yml
307
+ - spec/cassettes/Projects/GET/_project/should_raise_an_error_if_the_project_does_not_exist.yml
308
+ - spec/cassettes/Projects/GET/_project_buildtypes/should_fetch_all_the_buildTypes_for_a_project.yml
309
+ - spec/cassettes/Projects/GET/_project_buildtypes/should_return_nil_if_the_project_does_not_have_any_build_types.yml
310
+ - spec/cassettes/Projects/GET/_project_parameters/should_fetch_all_the_paramters_for_a_given_project.yml
311
+ - spec/cassettes/Projects/GET/_project_parameters/should_return_nil_if_there_are_no_parameters_defined_for_a_project.yml
312
+ - spec/cassettes/Projects/GET/_projects/should_fetch_projects.yml
313
+ - spec/cassettes/Projects/POST/_copy_project/should_copy_a_project.yml
314
+ - spec/cassettes/Projects/POST/_create_project/should_create_a_project.yml
315
+ - spec/cassettes/Projects/PUT/_set_parent_project/should_set_a_parent_project_for_a_given_project.yml
316
+ - spec/cassettes/Projects/PUT/_set_project_field/should_archive_a_project.yml
317
+ - spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_description.yml
318
+ - spec/cassettes/Projects/PUT/_set_project_field/should_set_a_projects_name.yml
319
+ - spec/cassettes/Projects/PUT/_set_project_parameter/should_set_a_project_parameter.yml
320
+ - spec/cassettes/Tests/GET/_tests/should_allow_you_to_filter_by_test_id.yml
321
+ - spec/cassettes/Tests/GET/_tests/should_allow_you_to_filter_results_by_test_count_locator.yml
322
+ - spec/cassettes/Tests/GET/_tests/should_fetch_all_the_tests.yml
323
+ - spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_no_build_is_found.yml
324
+ - spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_no_test_is_found.yml
325
+ - spec/cassettes/Tests/GET/_tests/should_return_an_empty_array_if_not_build_is_given.yml
326
+ - spec/cassettes/VCSRoots/GET/_vcs_root_details/should_fetch_the_vcs_root_details.yml
327
+ - spec/cassettes/VCSRoots/GET/_vcs_roots/should_fetch_vcs_roots.yml
328
+ - spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_git_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml
329
+ - spec/cassettes/VCSRoots/POST/_create_vcs_root/should_create_a_subversion_vcs_root_that_is_shared_with_the_project_and_sub-projects.yml
330
+ - spec/cassettes/VCSRoots/PUT/_set_vcs_root_field/should_set_a_vcs_modification_check_interval.yml
331
+ - spec/faraday/null_response_body_spec.rb
332
+ - spec/spec_helper.rb
333
+ - spec/support/vcr_setup.rb
334
+ - spec/teamcity/api_spec.rb
335
+ - spec/teamcity/client/builds_spec.rb
336
+ - spec/teamcity/client/buildtypes_spec.rb
337
+ - spec/teamcity/client/projects_spec.rb
338
+ - spec/teamcity/client/tests_spec.rb
339
+ - spec/teamcity/client/vcs_roots_spec.rb
340
+ - spec/teamcity/client_spec.rb
341
+ - spec/teamcity/element_builder_spec.rb
342
+ - spec/teamcity/headers_spec.rb
343
+ - spec/teamcity/version_spec.rb
344
+ - spec/teamcity_spec.rb