pdc 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +27 -0
- data/.gitignore +10 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +21 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +32 -0
- data/Guardfile +36 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +11 -0
- data/bin/console +11 -0
- data/bin/setup +11 -0
- data/docs/.gitignore +3 -0
- data/docs/LICENSE_sphinx_deployment +27 -0
- data/docs/Makefile +179 -0
- data/docs/source/conf.py +257 -0
- data/docs/source/example.rst +10 -0
- data/docs/source/index.rst +23 -0
- data/docs/sphinx_deployment.mk +117 -0
- data/examples/active_attr.rb +33 -0
- data/examples/http_failures.rb +18 -0
- data/examples/local_pdc_dev.rb +15 -0
- data/examples/logger.rb +50 -0
- data/examples/pdc_curb_access_token.rb +36 -0
- data/examples/pdc_resource_tests.rb +173 -0
- data/examples/pdc_test_cache.rb +48 -0
- data/examples/prod_failures.rb +26 -0
- data/examples/prod_pdc.rb +14 -0
- data/lib/pdc/base.rb +14 -0
- data/lib/pdc/config.rb +157 -0
- data/lib/pdc/errors.rb +8 -0
- data/lib/pdc/http/errors.rb +43 -0
- data/lib/pdc/http/request/append_slash.rb +19 -0
- data/lib/pdc/http/request.rb +12 -0
- data/lib/pdc/http/response/pagination.rb +43 -0
- data/lib/pdc/http/response/parser.rb +62 -0
- data/lib/pdc/http/response/raise_error.rb +13 -0
- data/lib/pdc/http/response.rb +3 -0
- data/lib/pdc/http/result.rb +28 -0
- data/lib/pdc/http.rb +12 -0
- data/lib/pdc/logger.rb +19 -0
- data/lib/pdc/resource/attribute_modifier.rb +43 -0
- data/lib/pdc/resource/attribute_store.rb +22 -0
- data/lib/pdc/resource/attributes.rb +144 -0
- data/lib/pdc/resource/errors.rb +3 -0
- data/lib/pdc/resource/identity.rb +75 -0
- data/lib/pdc/resource/path.rb +63 -0
- data/lib/pdc/resource/per_thread_registry.rb +54 -0
- data/lib/pdc/resource/relation/finder.rb +24 -0
- data/lib/pdc/resource/relation/pagination.rb +33 -0
- data/lib/pdc/resource/relation/query.rb +14 -0
- data/lib/pdc/resource/relation.rb +81 -0
- data/lib/pdc/resource/rest_api.rb +34 -0
- data/lib/pdc/resource/scope_registry.rb +19 -0
- data/lib/pdc/resource/scopes.rb +29 -0
- data/lib/pdc/resource/value_parser.rb +31 -0
- data/lib/pdc/resource/wip.rb +0 -0
- data/lib/pdc/resource.rb +12 -0
- data/lib/pdc/v1/arch.rb +6 -0
- data/lib/pdc/v1/product.rb +5 -0
- data/lib/pdc/v1/release.rb +18 -0
- data/lib/pdc/v1/release_variant.rb +17 -0
- data/lib/pdc/v1.rb +8 -0
- data/lib/pdc/version.rb +3 -0
- data/lib/pdc.rb +25 -0
- data/pdc.gemspec +38 -0
- data/spec/fixtures/vcr/_page_count_returns_total_count.yml +141 -0
- data/spec/fixtures/vcr/brew_can_be_nil.yml +61 -0
- data/spec/fixtures/vcr/brew_may_be_present.yml +50 -0
- data/spec/fixtures/vcr/caches_multiple_response.yml +173 -0
- data/spec/fixtures/vcr/caches_response_with_a_query.yml +64 -0
- data/spec/fixtures/vcr/caches_response_with_multiple_query.yml +64 -0
- data/spec/fixtures/vcr/caches_response_without_query.yml +61 -0
- data/spec/fixtures/vcr/can_iterate_using_each.yml +187 -0
- data/spec/fixtures/vcr/fetches_variants_of_a_release.yml +663 -0
- data/spec/fixtures/vcr/must_return_number_of_resources.yml +61 -0
- data/spec/fixtures/vcr/preserves_the_filters.yml +49 -0
- data/spec/fixtures/vcr/returns_resources_on_that_page.yml +49 -0
- data/spec/fixtures/vcr/returns_the_total_count_and_not_items_in_page.yml +135 -0
- data/spec/fixtures/vcr/should_not_be_in_the_list_of_attributes.yml +95 -0
- data/spec/fixtures/vcr/works_with_where.yml +49 -0
- data/spec/pdc/config_spec.rb +115 -0
- data/spec/pdc/http/errors_spec.rb +58 -0
- data/spec/pdc/resource/attributes_spec.rb +231 -0
- data/spec/pdc/resource/cache_spec.rb +88 -0
- data/spec/pdc/resource/count_spec.rb +45 -0
- data/spec/pdc/resource/identity_spec.rb +96 -0
- data/spec/pdc/resource/pagination_spec.rb +51 -0
- data/spec/pdc/resource/path_spec.rb +30 -0
- data/spec/pdc/resource/relation_spec.rb +94 -0
- data/spec/pdc/resource/rest_api_spec.rb +23 -0
- data/spec/pdc/resource/value_parser_spec.rb +15 -0
- data/spec/pdc/resource/wip_spec.rb +0 -0
- data/spec/pdc/v1/arch_spec.rb +34 -0
- data/spec/pdc/v1/release_spec.rb +54 -0
- data/spec/pdc/version_spec.rb +5 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/support/fixtures.rb +116 -0
- data/spec/support/vcr.rb +10 -0
- data/spec/support/webmock.rb +34 -0
- metadata +295 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/releases/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Faraday v0.9.2
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Wed, 27 Jul 2016 06:01:13 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
25
|
+
mod_wsgi/3.4 Python/2.7.5
|
26
|
+
expires:
|
27
|
+
- Wed, 27 Jul 2016 06:01:44 GMT
|
28
|
+
vary:
|
29
|
+
- Accept,Cookie
|
30
|
+
last-modified:
|
31
|
+
- Thu, 21 Jul 2016 12:24:12 GMT
|
32
|
+
allow:
|
33
|
+
- GET, POST, PUT, PATCH, HEAD, OPTIONS
|
34
|
+
cache-control:
|
35
|
+
- max-age=30
|
36
|
+
x-frame-options:
|
37
|
+
- SAMEORIGIN
|
38
|
+
connection:
|
39
|
+
- close
|
40
|
+
transfer-encoding:
|
41
|
+
- chunked
|
42
|
+
content-type:
|
43
|
+
- application/json
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: '{"count":54,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/releases/?page=2","previous":null,"results":[{"release_id":"atomicopenshift-3.2","short":"atomicopenshift","version":"3.2","name":"AtomicOpenShift","base_product":null,"active":true,"product_version":"atomicopenshift-3","release_type":"ga","compose_set":["AtomicOpenShift-3.2-20160519.4","AtomicOpenShift-3.2-20160519.6","AtomicOpenShift-3.2-20160520.3","AtomicOpenShift-3.2-20160520.4","AtomicOpenShift-3.2-20160520.6","AtomicOpenShift-3.2-20160520.7","AtomicOpenShift-3.2-20160530.2"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"cloudforms-4.1","short":"cloudforms","version":"4.1","name":"CloudForms","base_product":null,"active":true,"product_version":"cloudforms-4","release_type":"ga","compose_set":["CloudForms-4.1-20160520.8","CloudForms-4.1-20160520.9","CloudForms-4.1-20160530.1","CloudForms-4.1-20160530.2"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"dotnet-1.0@rhel-7","short":"dotnet","version":"1.0","name":"dotNET
|
47
|
+
on RHEL","base_product":"rhel-7","active":true,"product_version":"dotnet-1","release_type":"ga","compose_set":["dotNET-1.0-RHEL-7-20160601.0"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"dp-1.0","short":"dp","version":"1.0","name":"Dummy
|
48
|
+
Product","base_product":null,"active":true,"product_version":null,"release_type":"ga","compose_set":[],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"f-20","short":"f","version":"20","name":"Red
|
49
|
+
Hat Enterprise Linux","base_product":null,"active":true,"product_version":null,"release_type":"ga","compose_set":["RHEL-7.0-20140507.1"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"f-25","short":"f","version":"25","name":"Fedora","base_product":null,"active":true,"product_version":null,"release_type":"ga","compose_set":[],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":{"product_version":"production_version_1"}},{"release_id":"f-26","short":"f","version":"26","name":"Fedora","base_product":null,"active":true,"product_version":null,"release_type":"ga","compose_set":[],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":{"product_version":"production_version_1"}},{"release_id":"f-27","short":"f","version":"27","name":"Fedora","base_product":null,"active":true,"product_version":null,"release_type":"ga","compose_set":[],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":{"product_version":"production_version_1"}},{"release_id":"myproduct-2.1","short":"myproduct","version":"2.1","name":"MyProduct","base_product":null,"active":true,"product_version":"myproduct-2","release_type":"ga","compose_set":["MyProduct-2.1-20160519.9","MyProduct-2.1-20160519.10"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"openstack-9.0@rhel-7","short":"openstack","version":"9.0","name":"OpenStack","base_product":"rhel-7","active":true,"product_version":"openstack-9","release_type":"ga","compose_set":["OpenStack-9.0-RHEL-7-20160530.5"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-7.0","short":"rhel","version":"7.0","name":"Red
|
50
|
+
Hat Enterprise Linux","base_product":null,"active":true,"product_version":"rhel-7","release_type":"ga","compose_set":["RHEL-7.0-20140507.0"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-7.0-updates","short":"rhel","version":"7.0","name":"Red
|
51
|
+
Hat Enterprise Linux","base_product":null,"active":true,"product_version":"rhel-7","release_type":"updates","compose_set":["RHEL-7.0-20140507.0"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-7.1","short":"rhel","version":"7.1","name":"Red
|
52
|
+
Hat Enterprise Linux","base_product":null,"active":true,"product_version":"rhel-7","release_type":"ga","compose_set":["RHEL-7.1-20140507.2","RHEL-7.1-20140708.n.0","RHEL-7.1-20150219.1"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-7.1-updates","short":"rhel","version":"7.1","name":"Red
|
53
|
+
Hat Enterprise Linux","base_product":null,"active":true,"product_version":"rhel-7","release_type":"updates","compose_set":["RHEL-7.1-20150219.1"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-7.1-eus","short":"rhel","version":"7.1","name":"Red
|
54
|
+
Hat Enterprise Linux","base_product":null,"active":true,"product_version":"rhel-7","release_type":"eus","compose_set":["RHEL-7.1-20150219.1"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-7.2","short":"rhel","version":"7.2","name":"rhel7.2","base_product":null,"active":true,"product_version":null,"release_type":"ga","compose_set":[],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhel-le-7.1","short":"rhel-le","version":"7.1","name":"Red
|
55
|
+
Hat Enterprise Linux - LE","base_product":null,"active":true,"product_version":"rhel-le-7","release_type":"ga","compose_set":["RHEL-LE-7.1-20150219.1"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhscl-1.2@rhel-6","short":"rhscl","version":"1.2","name":"Red
|
56
|
+
Hat Software Collections","base_product":"rhel-6","active":true,"product_version":"rhscl-1","release_type":"ga","compose_set":["RHSCL-1.2-RHEL-6-20140814.0"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhscl-1.2@rhel-7","short":"rhscl","version":"1.2","name":"Red
|
57
|
+
Hat Software Collections","base_product":"rhel-7","active":true,"product_version":"rhscl-1","release_type":"ga","compose_set":["RHSCL-1.2-RHEL-7-20140814.0"],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"rhscl-2.2@rhel-6.6-eus","short":"rhscl","version":"2.2","name":"Red
|
58
|
+
Hat Software Collections","base_product":"rhel-6.6-eus","active":true,"product_version":"rhscl-2","release_type":"ga","compose_set":[],"integrated_with":null,"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null}]}'
|
59
|
+
http_version:
|
60
|
+
recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
|
61
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/release%2Dvariants/?name=rh-common&type=variant
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Faraday v0.9.2
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Wed, 27 Jul 2016 06:01:11 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
25
|
+
mod_wsgi/3.4 Python/2.7.5
|
26
|
+
expires:
|
27
|
+
- Wed, 27 Jul 2016 06:01:41 GMT
|
28
|
+
vary:
|
29
|
+
- Accept,Cookie
|
30
|
+
last-modified:
|
31
|
+
- Thu, 21 Jul 2016 12:24:12 GMT
|
32
|
+
allow:
|
33
|
+
- GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
|
34
|
+
cache-control:
|
35
|
+
- max-age=30
|
36
|
+
x-frame-options:
|
37
|
+
- SAMEORIGIN
|
38
|
+
connection:
|
39
|
+
- close
|
40
|
+
transfer-encoding:
|
41
|
+
- chunked
|
42
|
+
content-type:
|
43
|
+
- application/json
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: '{"count":3,"next":null,"previous":null,"results":[{"release":"satellite-6.0.4@rhel-5","id":"rhcommon","uid":"rhcommon","name":"rh-common","type":"variant","arches":["i386","ia64","ppc","s390x","x86_64"]},{"release":"satellite-6.0.4@rhel-6","id":"rhcommon","uid":"rhcommon","name":"rh-common","type":"variant","arches":["i386","ppc64","s390x","x86_64"]},{"release":"satellite-6.0.4@rhel-7","id":"rhcommon","uid":"rhcommon","name":"rh-common","type":"variant","arches":["ppc64","s390x","x86_64"]}]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
|
49
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Faraday v0.9.2
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Wed, 27 Jul 2016 06:01:36 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
25
|
+
mod_wsgi/3.4 Python/2.7.5
|
26
|
+
expires:
|
27
|
+
- Wed, 27 Jul 2016 06:02:06 GMT
|
28
|
+
vary:
|
29
|
+
- Accept,Cookie
|
30
|
+
last-modified:
|
31
|
+
- Thu, 30 Jun 2016 10:00:15 GMT
|
32
|
+
allow:
|
33
|
+
- GET, POST, HEAD, OPTIONS
|
34
|
+
cache-control:
|
35
|
+
- max-age=30
|
36
|
+
x-frame-options:
|
37
|
+
- SAMEORIGIN
|
38
|
+
connection:
|
39
|
+
- close
|
40
|
+
transfer-encoding:
|
41
|
+
- chunked
|
42
|
+
content-type:
|
43
|
+
- application/json
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3","previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
|
49
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,135 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Faraday v0.9.2
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Wed, 27 Jul 2016 06:46:05 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
25
|
+
mod_wsgi/3.4 Python/2.7.5
|
26
|
+
expires:
|
27
|
+
- Wed, 27 Jul 2016 06:46:38 GMT
|
28
|
+
vary:
|
29
|
+
- Accept,Cookie
|
30
|
+
last-modified:
|
31
|
+
- Thu, 30 Jun 2016 10:00:15 GMT
|
32
|
+
allow:
|
33
|
+
- GET, POST, HEAD, OPTIONS
|
34
|
+
cache-control:
|
35
|
+
- max-age=30
|
36
|
+
x-frame-options:
|
37
|
+
- SAMEORIGIN
|
38
|
+
transfer-encoding:
|
39
|
+
- chunked
|
40
|
+
content-type:
|
41
|
+
- application/json
|
42
|
+
body:
|
43
|
+
encoding: UTF-8
|
44
|
+
string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2","previous":null,"results":[{"name":"alpha"},{"name":"alphaev4"},{"name":"alphaev45"},{"name":"alphaev5"},{"name":"alphaev56"},{"name":"alphaev6"},{"name":"alphaev67"},{"name":"alphaev68"},{"name":"alphaev7"},{"name":"alphapca56"},{"name":"amd64"},{"name":"arm64"},{"name":"armv5tejl"},{"name":"armv5tel"},{"name":"armv6l"},{"name":"armv7hl"},{"name":"armv7hnl"},{"name":"armv7l"},{"name":"athlon"},{"name":"geode"}]}'
|
45
|
+
http_version:
|
46
|
+
recorded_at: Wed, 27 Jul 2016 06:46:08 GMT
|
47
|
+
- request:
|
48
|
+
method: get
|
49
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ''
|
53
|
+
headers:
|
54
|
+
Accept:
|
55
|
+
- application/json
|
56
|
+
Content-Type:
|
57
|
+
- application/json
|
58
|
+
User-Agent:
|
59
|
+
- Faraday v0.9.2
|
60
|
+
response:
|
61
|
+
status:
|
62
|
+
code: 200
|
63
|
+
message:
|
64
|
+
headers:
|
65
|
+
date:
|
66
|
+
- Wed, 27 Jul 2016 06:46:09 GMT
|
67
|
+
server:
|
68
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
69
|
+
mod_wsgi/3.4 Python/2.7.5
|
70
|
+
expires:
|
71
|
+
- Wed, 27 Jul 2016 06:46:42 GMT
|
72
|
+
vary:
|
73
|
+
- Accept,Cookie
|
74
|
+
last-modified:
|
75
|
+
- Thu, 30 Jun 2016 10:00:15 GMT
|
76
|
+
allow:
|
77
|
+
- GET, POST, HEAD, OPTIONS
|
78
|
+
cache-control:
|
79
|
+
- max-age=30
|
80
|
+
x-frame-options:
|
81
|
+
- SAMEORIGIN
|
82
|
+
transfer-encoding:
|
83
|
+
- chunked
|
84
|
+
content-type:
|
85
|
+
- application/json
|
86
|
+
body:
|
87
|
+
encoding: UTF-8
|
88
|
+
string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3","previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
|
89
|
+
http_version:
|
90
|
+
recorded_at: Wed, 27 Jul 2016 06:46:12 GMT
|
91
|
+
- request:
|
92
|
+
method: get
|
93
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2
|
94
|
+
body:
|
95
|
+
encoding: US-ASCII
|
96
|
+
string: ''
|
97
|
+
headers:
|
98
|
+
Accept:
|
99
|
+
- application/json
|
100
|
+
Content-Type:
|
101
|
+
- application/json
|
102
|
+
User-Agent:
|
103
|
+
- Faraday v0.9.2
|
104
|
+
response:
|
105
|
+
status:
|
106
|
+
code: 200
|
107
|
+
message:
|
108
|
+
headers:
|
109
|
+
date:
|
110
|
+
- Wed, 27 Jul 2016 06:46:13 GMT
|
111
|
+
server:
|
112
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
113
|
+
mod_wsgi/3.4 Python/2.7.5
|
114
|
+
expires:
|
115
|
+
- Wed, 27 Jul 2016 06:46:45 GMT
|
116
|
+
vary:
|
117
|
+
- Accept,Cookie
|
118
|
+
last-modified:
|
119
|
+
- Thu, 30 Jun 2016 10:00:15 GMT
|
120
|
+
allow:
|
121
|
+
- GET, POST, HEAD, OPTIONS
|
122
|
+
cache-control:
|
123
|
+
- max-age=30
|
124
|
+
x-frame-options:
|
125
|
+
- SAMEORIGIN
|
126
|
+
transfer-encoding:
|
127
|
+
- chunked
|
128
|
+
content-type:
|
129
|
+
- application/json
|
130
|
+
body:
|
131
|
+
encoding: UTF-8
|
132
|
+
string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3","previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
|
133
|
+
http_version:
|
134
|
+
recorded_at: Wed, 27 Jul 2016 06:46:16 GMT
|
135
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,95 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Faraday v0.9.2
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Wed, 27 Jul 2016 06:01:39 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
25
|
+
mod_wsgi/3.4 Python/2.7.5
|
26
|
+
expires:
|
27
|
+
- Wed, 27 Jul 2016 06:02:09 GMT
|
28
|
+
vary:
|
29
|
+
- Accept,Cookie
|
30
|
+
last-modified:
|
31
|
+
- Thu, 30 Jun 2016 10:00:15 GMT
|
32
|
+
allow:
|
33
|
+
- GET, POST, HEAD, OPTIONS
|
34
|
+
cache-control:
|
35
|
+
- max-age=30
|
36
|
+
x-frame-options:
|
37
|
+
- SAMEORIGIN
|
38
|
+
connection:
|
39
|
+
- close
|
40
|
+
transfer-encoding:
|
41
|
+
- chunked
|
42
|
+
content-type:
|
43
|
+
- application/json
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3","previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
|
49
|
+
- request:
|
50
|
+
method: get
|
51
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3
|
52
|
+
body:
|
53
|
+
encoding: US-ASCII
|
54
|
+
string: ''
|
55
|
+
headers:
|
56
|
+
Accept:
|
57
|
+
- application/json
|
58
|
+
Content-Type:
|
59
|
+
- application/json
|
60
|
+
User-Agent:
|
61
|
+
- Faraday v0.9.2
|
62
|
+
response:
|
63
|
+
status:
|
64
|
+
code: 200
|
65
|
+
message:
|
66
|
+
headers:
|
67
|
+
date:
|
68
|
+
- Wed, 27 Jul 2016 06:01:42 GMT
|
69
|
+
server:
|
70
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
71
|
+
mod_wsgi/3.4 Python/2.7.5
|
72
|
+
expires:
|
73
|
+
- Wed, 27 Jul 2016 06:02:12 GMT
|
74
|
+
vary:
|
75
|
+
- Accept,Cookie
|
76
|
+
last-modified:
|
77
|
+
- Thu, 30 Jun 2016 10:00:15 GMT
|
78
|
+
allow:
|
79
|
+
- GET, POST, HEAD, OPTIONS
|
80
|
+
cache-control:
|
81
|
+
- max-age=30
|
82
|
+
x-frame-options:
|
83
|
+
- SAMEORIGIN
|
84
|
+
connection:
|
85
|
+
- close
|
86
|
+
transfer-encoding:
|
87
|
+
- chunked
|
88
|
+
content-type:
|
89
|
+
- application/json
|
90
|
+
body:
|
91
|
+
encoding: UTF-8
|
92
|
+
string: '{"count":50,"next":null,"previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2","results":[{"name":"sparc64"},{"name":"sparc64v"},{"name":"sparcv8"},{"name":"sparcv9"},{"name":"sparcv9v"},{"name":"src"},{"name":"x86_64"},{"name":"aarch64"},{"name":"asdfwfsf"},{"name":"asdfdswe"}]}'
|
93
|
+
http_version:
|
94
|
+
recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
|
95
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/releases/?active=false
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Faraday v0.9.2
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Wed, 27 Jul 2016 06:01:15 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
|
25
|
+
mod_wsgi/3.4 Python/2.7.5
|
26
|
+
expires:
|
27
|
+
- Wed, 27 Jul 2016 06:01:45 GMT
|
28
|
+
vary:
|
29
|
+
- Accept,Cookie
|
30
|
+
last-modified:
|
31
|
+
- Thu, 21 Jul 2016 12:24:12 GMT
|
32
|
+
allow:
|
33
|
+
- GET, POST, PUT, PATCH, HEAD, OPTIONS
|
34
|
+
cache-control:
|
35
|
+
- max-age=30
|
36
|
+
x-frame-options:
|
37
|
+
- SAMEORIGIN
|
38
|
+
connection:
|
39
|
+
- close
|
40
|
+
transfer-encoding:
|
41
|
+
- chunked
|
42
|
+
content-type:
|
43
|
+
- application/json
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: '{"count":0,"next":null,"previous":null,"results":[]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
|
49
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PDC do
|
4
|
+
before do
|
5
|
+
@old_config = PDC.config
|
6
|
+
end
|
7
|
+
after do
|
8
|
+
PDC.config = @old_config
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '##configure' do
|
12
|
+
let(:site) { 'https://pdc.production.site.org' }
|
13
|
+
let(:token_url) do
|
14
|
+
pdc = PDC.config
|
15
|
+
URI.join(site, pdc.api_root, pdc.token_obtain_path)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'wont accept invalid config' do
|
19
|
+
assert_raises PDC::ConfigError do
|
20
|
+
PDC.configure do |config|
|
21
|
+
config.invalid_option = 'foobar'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns Faraday' do
|
27
|
+
ret = PDC.configure do |config|
|
28
|
+
config.site = 'http://foobar'
|
29
|
+
config.token = 'foo'
|
30
|
+
end
|
31
|
+
ret.must_be_instance_of Faraday::Connection
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'fetches token by default' do
|
35
|
+
endpoint = stub_request(:get, token_url).to_return_json(token: 'foobar')
|
36
|
+
PDC.configure { |pdc| pdc.site = site }
|
37
|
+
|
38
|
+
assert_requested endpoint
|
39
|
+
PDC.token.must_equal 'foobar'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'raises TokenFetchFailed when fails' do
|
43
|
+
endpoint = stub_request(:get, token_url).to_return_json(
|
44
|
+
{ detail: 'Not found' },
|
45
|
+
status: [404, 'NOT FOUND']
|
46
|
+
)
|
47
|
+
|
48
|
+
assert_raises PDC::TokenFetchFailed do
|
49
|
+
PDC.configure { |pdc| pdc.site = site }
|
50
|
+
end
|
51
|
+
assert_requested endpoint
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#config' do
|
56
|
+
before do
|
57
|
+
@config = PDC.config
|
58
|
+
@config.requires_token = false
|
59
|
+
end
|
60
|
+
|
61
|
+
after do
|
62
|
+
PDC.config = @config
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'allows default site to be overridden ' do
|
66
|
+
PDC.configure do |config|
|
67
|
+
config.site = 'http://localhost:8888'
|
68
|
+
config.token = :foo
|
69
|
+
end
|
70
|
+
PDC.config.site.must_equal 'http://localhost:8888'
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'preserves default values of items not overridden ' do
|
74
|
+
default_api_root = PDC.config.api_root
|
75
|
+
site = PDC.config.site
|
76
|
+
token = PDC.config.token
|
77
|
+
|
78
|
+
new_site = 'http://localhost:8888'
|
79
|
+
new_token = :foobar
|
80
|
+
PDC.configure do |config|
|
81
|
+
config.site = new_site
|
82
|
+
config.token = new_token
|
83
|
+
end
|
84
|
+
PDC.config.site.must_equal new_site
|
85
|
+
PDC.config.token.must_equal new_token
|
86
|
+
|
87
|
+
PDC.config.api_root.must_equal default_api_root
|
88
|
+
PDC.config.site.wont_equal site
|
89
|
+
PDC.config.token.wont_equal token
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'creates a new Config' do
|
93
|
+
old_config = PDC.config
|
94
|
+
PDC.configure do |config|
|
95
|
+
config.site = 'https://foobar'
|
96
|
+
config.token = :foobar
|
97
|
+
end
|
98
|
+
PDC.config.wont_equal old_config
|
99
|
+
PDC.config.must_equal PDC.config
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'resets connection when changed' do
|
103
|
+
old_connection = PDC::Base.connection
|
104
|
+
# assert that calling it again returns the same
|
105
|
+
PDC::Base.connection.must_equal old_connection
|
106
|
+
|
107
|
+
new_connection = PDC.configure do |config|
|
108
|
+
config.site = 'http://localhost:8888'
|
109
|
+
config.token = :foobar
|
110
|
+
end
|
111
|
+
PDC::Base.connection.must_equal new_connection
|
112
|
+
new_connection.wont_equal old_connection
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
FakeResponse = Struct.new(:status, :body)
|
4
|
+
FakeRequest = Struct.new(:url, :headers)
|
5
|
+
|
6
|
+
describe PDC::ResponseError do
|
7
|
+
describe '#response' do
|
8
|
+
it 'must be passed and can be retrieved' do
|
9
|
+
response = FakeResponse.new
|
10
|
+
error = PDC::ResponseError.new(response: response)
|
11
|
+
error.response.must_equal response
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#status' do
|
16
|
+
it 'has an error status' do
|
17
|
+
response = FakeResponse.new(200)
|
18
|
+
error = PDC::ResponseError.new(response: response)
|
19
|
+
error.status.must_equal response.status
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe PDC::JsonError do
|
25
|
+
describe '#message' do
|
26
|
+
describe 'response.body is json' do
|
27
|
+
let(:detail) { 'No Authentication token' }
|
28
|
+
let(:body_with_detail) { { 'detail' => detail } }
|
29
|
+
let(:body_without_detail) { { 'foo' => 'bar', 'bar' => 'baz' } }
|
30
|
+
|
31
|
+
it 'must return detail if present' do
|
32
|
+
status = 404
|
33
|
+
response = FakeResponse.new(status, body_with_detail.to_json)
|
34
|
+
error = PDC::JsonError.new(response: response)
|
35
|
+
error.message.must_equal "Error: #{status} - #{detail}"
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'must return body if detail is absent' do
|
39
|
+
status = 404
|
40
|
+
response = FakeResponse.new(status, body_without_detail.to_json)
|
41
|
+
error = PDC::JsonError.new(response: response)
|
42
|
+
|
43
|
+
error.message.must_equal "Error: #{status} - #{body_without_detail.to_json}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'response.body is not json parsable' do
|
48
|
+
let(:invalid_json) { '<html><head></head><body></body></html>' }
|
49
|
+
let(:status) { 404 }
|
50
|
+
let(:response) { FakeResponse.new(status, '<html><head></head><body></body></html>') }
|
51
|
+
|
52
|
+
it 'must return body' do
|
53
|
+
error = PDC::JsonError.new(response: response)
|
54
|
+
error.message.must_equal "Error: #{status} - #{response.body}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|