digicert 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -0
- data/Gemfile +1 -1
- data/README.md +31 -0
- data/bin/rspec +3 -2
- data/lib/digicert.rb +3 -0
- data/lib/digicert/actions/all.rb +7 -3
- data/lib/digicert/actions/create.rb +1 -1
- data/lib/digicert/actions/fetch.rb +1 -1
- data/lib/digicert/actions/update.rb +1 -1
- data/lib/digicert/certificate.rb +1 -1
- data/lib/digicert/client_certificate/premium.rb +1 -1
- data/lib/digicert/csr_generator.rb +1 -1
- data/lib/digicert/domain.rb +3 -3
- data/lib/digicert/email_validation.rb +1 -1
- data/lib/digicert/errors.rb +1 -1
- data/lib/digicert/errors/request_error.rb +3 -2
- data/lib/digicert/order_cancellation.rb +1 -1
- data/lib/digicert/order_manager.rb +1 -1
- data/lib/digicert/organization.rb +1 -1
- data/lib/digicert/request.rb +5 -3
- data/lib/digicert/response.rb +2 -2
- data/lib/digicert/rspec.rb +21 -0
- data/lib/digicert/ssl_certificate/base.rb +0 -1
- data/lib/digicert/util.rb +34 -0
- data/lib/digicert/version.rb +1 -1
- data/spec/acceptance/duplicating_certificate_spec.rb +1 -1
- data/spec/acceptance/reissuing_certificate_spec.rb +2 -2
- data/spec/digicert/actions/all_spec.rb +33 -5
- data/spec/digicert/actions/update_spec.rb +2 -2
- data/spec/digicert/certificate_downloader_spec.rb +4 -4
- data/spec/digicert/certificate_request_spec.rb +2 -2
- data/spec/digicert/certificate_spec.rb +1 -1
- data/spec/digicert/client_certificate/digital_signature_plus_spec.rb +1 -1
- data/spec/digicert/client_certificate/email_security_plus_spec.rb +1 -1
- data/spec/digicert/client_certificate/premium_spec.rb +1 -1
- data/spec/digicert/domain_spec.rb +2 -2
- data/spec/digicert/order_duplicator_spec.rb +1 -1
- data/spec/digicert/order_reissuer_spec.rb +1 -1
- data/spec/digicert/order_spec.rb +24 -10
- data/spec/digicert/request_spec.rb +1 -1
- data/spec/digicert/util_spec.rb +26 -0
- data/spec/requests/certificate_reissuing_spec.rb +0 -1
- data/spec/requests/domain_management_spec.rb +1 -1
- data/spec/requests/order_client_email_security_plus_spec.rb +1 -1
- data/spec/requests/order_client_premium_certificate_spec.rb +65 -0
- data/spec/requests/order_ssl_ev_plus_spec.rb +2 -2
- data/spec/requests/order_ssl_wildcard_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/support/fake_digicert_api.rb +22 -16
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdf876cef7eea96750f7678894027221b448f2e6
|
4
|
+
data.tar.gz: fcb2979e844e56a22617647f85d50364d2038b0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfc0e06614d1e50fe1379855abe21f099574c4af48878c9ea109f5a5ad4b61c4b72fe3f7897c30279683160afcacdb72c7cd6f7daf73d3d25ae86a027bfa7d0d
|
7
|
+
data.tar.gz: c97dc961f495a41aa270e02bcf4cedeedc7cc95071ec5e1a4d6a9230d099fe5fcad3572e8b043bc3f16fb931551df9118703509f01498cef676f2d139953095e
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
AllCops:
|
2
|
+
TargetRubyVersion: 2.3
|
3
|
+
|
2
4
|
Exclude:
|
3
5
|
- db/schema.rb
|
4
6
|
|
@@ -351,6 +353,9 @@ Style/StringLiterals:
|
|
351
353
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals'
|
352
354
|
EnforcedStyle: double_quotes
|
353
355
|
Enabled: true
|
356
|
+
SupportedStyles:
|
357
|
+
- single_quotes
|
358
|
+
- double_quotes
|
354
359
|
|
355
360
|
Style/FrozenStringLiteralComment:
|
356
361
|
Enabled: false
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
Status](https://travis-ci.org/riboseinc/digicert.svg?branch=master)](https://travis-ci.org/riboseinc/digicert)
|
5
5
|
[![Code
|
6
6
|
Climate](https://codeclimate.com/github/riboseinc/digicert/badges/gpa.svg)](https://codeclimate.com/github/riboseinc/digicert)
|
7
|
+
[![Gem
|
8
|
+
Version](https://badge.fury.io/rb/digicert.svg)](https://badge.fury.io/rb/digicert)
|
7
9
|
|
8
10
|
The Ruby client for the official Digicert API.
|
9
11
|
|
@@ -515,6 +517,35 @@ Use this interface to retrieve a list of all certificate orders.
|
|
515
517
|
Digicert::Order.all
|
516
518
|
```
|
517
519
|
|
520
|
+
This interface also supports query params like `limit`, `offset`, `sort` and
|
521
|
+
filters. We can use those to retrieve more precised orders.
|
522
|
+
|
523
|
+
```ruby
|
524
|
+
Digicert::Order.all(
|
525
|
+
limit: 20,
|
526
|
+
offset: 0,
|
527
|
+
sort: 'date_created',
|
528
|
+
|
529
|
+
filters: {
|
530
|
+
status: "approved",
|
531
|
+
common_name: "ribosetest.com"
|
532
|
+
}
|
533
|
+
)
|
534
|
+
```
|
535
|
+
|
536
|
+
There is also another interface `.filter`, which is basically an alias around
|
537
|
+
the `.all` interface but it passes each of the argument as a filters attributes
|
538
|
+
|
539
|
+
```ruby
|
540
|
+
Digicert::Order.filter(status: "approved", common_name: "ribosetest.com")
|
541
|
+
|
542
|
+
# Similar functionality with all interface
|
543
|
+
#
|
544
|
+
Digicert::Order.all(
|
545
|
+
filters: { status: "approved", common_name: "ribosetest.com" }
|
546
|
+
)
|
547
|
+
```
|
548
|
+
|
518
549
|
#### List of Email Validations
|
519
550
|
|
520
551
|
Use this interface to view the status of all emails that require validation on a
|
data/bin/rspec
CHANGED
@@ -8,8 +8,9 @@
|
|
8
8
|
#
|
9
9
|
|
10
10
|
require "pathname"
|
11
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(
|
12
|
-
Pathname.new(__FILE__).realpath
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(
|
12
|
+
"../../Gemfile", Pathname.new(__FILE__).realpath
|
13
|
+
)
|
13
14
|
|
14
15
|
require "rubygems"
|
15
16
|
require "bundler/setup"
|
data/lib/digicert.rb
CHANGED
data/lib/digicert/actions/all.rb
CHANGED
@@ -7,7 +7,7 @@ module Digicert
|
|
7
7
|
|
8
8
|
def all
|
9
9
|
response = Digicert::Request.new(
|
10
|
-
:get, resource_path, params: query_params
|
10
|
+
:get, resource_path, params: query_params
|
11
11
|
).parse
|
12
12
|
|
13
13
|
response[resources_key]
|
@@ -18,8 +18,12 @@ module Digicert
|
|
18
18
|
end
|
19
19
|
|
20
20
|
module ClassMethods
|
21
|
-
def all(
|
22
|
-
new(params:
|
21
|
+
def all(query_params = {})
|
22
|
+
new(params: query_params).all
|
23
|
+
end
|
24
|
+
|
25
|
+
def filter(filter_params = {})
|
26
|
+
new(params: { filters: filter_params }).all
|
23
27
|
end
|
24
28
|
end
|
25
29
|
end
|
data/lib/digicert/certificate.rb
CHANGED
data/lib/digicert/domain.rb
CHANGED
@@ -11,13 +11,13 @@ module Digicert
|
|
11
11
|
|
12
12
|
def activate
|
13
13
|
request_klass.new(
|
14
|
-
:put, [resource_path, resource_id, "activate"].join("/")
|
14
|
+
:put, [resource_path, resource_id, "activate"].join("/")
|
15
15
|
).parse
|
16
16
|
end
|
17
17
|
|
18
18
|
def deactivate
|
19
19
|
request_klass.new(
|
20
|
-
:put, [resource_path, resource_id, "deactivate"].join("/")
|
20
|
+
:put, [resource_path, resource_id, "deactivate"].join("/")
|
21
21
|
).parse
|
22
22
|
end
|
23
23
|
|
@@ -50,7 +50,7 @@ module Digicert
|
|
50
50
|
required_attributes = {
|
51
51
|
name: name,
|
52
52
|
organization: organization,
|
53
|
-
validations: validate_validations(validations)
|
53
|
+
validations: validate_validations(validations),
|
54
54
|
}
|
55
55
|
|
56
56
|
required_attributes.merge(attributes)
|
@@ -10,7 +10,7 @@ module Digicert
|
|
10
10
|
|
11
11
|
def self.valid?(token:, email:)
|
12
12
|
response = Digicert::Request.new(
|
13
|
-
:put, ["email-validation", token].join("/"), params: {email: email }
|
13
|
+
:put, ["email-validation", token].join("/"), params: { email: email }
|
14
14
|
).run
|
15
15
|
|
16
16
|
response.code.to_i == 204
|
data/lib/digicert/errors.rb
CHANGED
@@ -9,7 +9,7 @@ module Digicert
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def message
|
12
|
-
<<-MSG.gsub(/^ {8}/,
|
12
|
+
<<-MSG.gsub(/^ {8}/, "")
|
13
13
|
#{explanation}:
|
14
14
|
#{response_body}
|
15
15
|
MSG
|
@@ -28,7 +28,8 @@ module Digicert
|
|
28
28
|
attr_reader :msg
|
29
29
|
|
30
30
|
def response_body
|
31
|
-
JSON[msg]
|
31
|
+
JSON[msg]
|
32
|
+
rescue {}
|
32
33
|
end
|
33
34
|
end
|
34
35
|
end
|
data/lib/digicert/request.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require "uri"
|
2
2
|
require "json"
|
3
3
|
require "net/http"
|
4
|
+
|
5
|
+
require "digicert/util"
|
4
6
|
require "digicert/response"
|
5
7
|
require "digicert/errors"
|
6
8
|
|
@@ -65,7 +67,7 @@ module Digicert
|
|
65
67
|
URI::HTTPS.build(
|
66
68
|
host: Digicert.configuration.api_host,
|
67
69
|
path: digicert_api_path_with_base,
|
68
|
-
query: build_query_params
|
70
|
+
query: build_query_params,
|
69
71
|
)
|
70
72
|
end
|
71
73
|
|
@@ -82,13 +84,13 @@ module Digicert
|
|
82
84
|
def set_request_headers!(request)
|
83
85
|
request.initialize_http_header(
|
84
86
|
"Content-Type" => "application/json",
|
85
|
-
"X-DC-DEVKEY" => Digicert.configuration.api_key
|
87
|
+
"X-DC-DEVKEY" => Digicert.configuration.api_key,
|
86
88
|
)
|
87
89
|
end
|
88
90
|
|
89
91
|
def build_query_params
|
90
92
|
if @query_params
|
91
|
-
|
93
|
+
Digicert::Util.to_query(@query_params)
|
92
94
|
end
|
93
95
|
end
|
94
96
|
|
data/lib/digicert/response.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# Test Helpers for RSpec
|
2
|
+
#
|
3
|
+
# Actual API requests are slow and expensive and we try not to make actual
|
4
|
+
# API request when possible. For most of our tests we mock the API call which
|
5
|
+
# verifies the endpoint, http verb and headers and based on those it responses
|
6
|
+
# with an identical fixture file.
|
7
|
+
#
|
8
|
+
# The main purpose of this file is to allow you to use our test helpers by
|
9
|
+
# simplify adding this file to your application and then use the available
|
10
|
+
# helper method when necessary.
|
11
|
+
#
|
12
|
+
# Please check `spec/support` directory to see the available helper methods.
|
13
|
+
#
|
14
|
+
# We do not include this module with the gem by default, but you can do so
|
15
|
+
# by adding `require "digicert/rspec"` on top of your `spec_helpe` file.
|
16
|
+
#
|
17
|
+
require File.join(Digicert.root, "spec/support/fake_digicert_api.rb")
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.include Digicert::FakeDigicertApi
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "cgi"
|
2
|
+
|
3
|
+
module Digicert
|
4
|
+
class Util
|
5
|
+
def to_query(query)
|
6
|
+
build_query(query).flatten.join("&")
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.to_query(query)
|
10
|
+
new.to_query(query)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def build_query(value, key = nil)
|
16
|
+
if value.is_a?(Hash)
|
17
|
+
build_recursive_query(value, key)
|
18
|
+
else
|
19
|
+
build_escaped_key_value_pair(key, value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def build_recursive_query(query, namespace = nil)
|
24
|
+
query.map do |key, value|
|
25
|
+
query_key = namespace ? "#{namespace}[#{key}]" : key
|
26
|
+
build_query(value, query_key)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_escaped_key_value_pair(key, value)
|
31
|
+
[CGI.escape(key.to_s), CGI.escape(value.to_s)].join("=")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/digicert/version.rb
CHANGED
@@ -32,7 +32,7 @@ RSpec.describe "Re-issuing a certificate" do
|
|
32
32
|
#
|
33
33
|
if request.status == "pending"
|
34
34
|
stub_digicert_certificate_request_update_api(
|
35
|
-
request_id, request_status_attributes
|
35
|
+
request_id, request_status_attributes
|
36
36
|
)
|
37
37
|
|
38
38
|
Digicert::CertificateRequest.update(request_id, request_status_attributes)
|
@@ -84,7 +84,7 @@ RSpec.describe "Re-issuing a certificate" do
|
|
84
84
|
csr: order.certificate.csr,
|
85
85
|
signature_hash: order.certificate.signature_hash,
|
86
86
|
server_platform: { id: order.certificate.server_platform.id },
|
87
|
-
}
|
87
|
+
},
|
88
88
|
}
|
89
89
|
end
|
90
90
|
|
@@ -3,12 +3,40 @@ require "digicert/base"
|
|
3
3
|
|
4
4
|
RSpec.describe "Digicert::Actions::ALL" do
|
5
5
|
describe ".all" do
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
context "with out query param" do
|
7
|
+
it "retrieves the list of resources" do
|
8
|
+
stub_digicert_organization_list_api
|
9
|
+
organizations = Digicert::TestAllAction.all
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
expect(organizations.count).to eq(2)
|
12
|
+
expect(organizations.first.name).not_to be_nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "with specificed query params" do
|
17
|
+
it "pass the params and retrieve the list of resources" do
|
18
|
+
query_params = { limit: 2, offset: 0, sort: "date_created" }
|
19
|
+
|
20
|
+
stub_digicert_organization_list_api(query_params)
|
21
|
+
organizations = Digicert::TestAllAction.all(query_params)
|
22
|
+
|
23
|
+
expect(organizations.count).to eq(2)
|
24
|
+
expect(organizations.first.name).not_to be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe ".filter" do
|
30
|
+
context "with filters params" do
|
31
|
+
it "retrieves the filterered resources" do
|
32
|
+
filters = { status: "approved" }
|
33
|
+
stub_digicert_organization_list_api(filters: filters)
|
34
|
+
|
35
|
+
organizations = Digicert::TestAllAction.filter(filters)
|
36
|
+
|
37
|
+
expect(organizations.count).to eq(2)
|
38
|
+
expect(organizations.first.name).not_to be_nil
|
39
|
+
end
|
12
40
|
end
|
13
41
|
end
|
14
42
|
|
@@ -7,11 +7,11 @@ RSpec.describe "Digicert::Actions::Update" do
|
|
7
7
|
it "updates the resource attributes" do
|
8
8
|
resource_id = 123_456_789
|
9
9
|
stub_digicert_certificate_request_update_api(
|
10
|
-
resource_id, certificate_status_attributes
|
10
|
+
resource_id, certificate_status_attributes
|
11
11
|
)
|
12
12
|
|
13
13
|
resource = Digicert::TestUpdateAction.update(
|
14
|
-
resource_id, certificate_status_attributes
|
14
|
+
resource_id, certificate_status_attributes
|
15
15
|
)
|
16
16
|
|
17
17
|
expect(resource.code.to_i).to eq(204)
|
@@ -8,7 +8,7 @@ RSpec.describe Digicert::CertificateDownloader do
|
|
8
8
|
stub_digicert_certificate_download_by_platform(certificate_id, platform)
|
9
9
|
|
10
10
|
certificate = Digicert::CertificateDownloader.fetch(
|
11
|
-
certificate_id, platform: platform
|
11
|
+
certificate_id, platform: platform
|
12
12
|
)
|
13
13
|
|
14
14
|
expect(certificate.code.to_i).to eq(200)
|
@@ -24,7 +24,7 @@ RSpec.describe Digicert::CertificateDownloader do
|
|
24
24
|
|
25
25
|
stub_digicert_certificate_download_by_platform(certificate_id)
|
26
26
|
Digicert::CertificateDownloader.fetch_to_path(
|
27
|
-
certificate_id, path: download_path, ext: "zip"
|
27
|
+
certificate_id, path: download_path, ext: "zip"
|
28
28
|
)
|
29
29
|
|
30
30
|
download_url = [download_path, "certificate.zip"].join("/")
|
@@ -39,7 +39,7 @@ RSpec.describe Digicert::CertificateDownloader do
|
|
39
39
|
|
40
40
|
stub_digicert_certificate_download_by_platform(certificate_id, platform)
|
41
41
|
certificate = Digicert::CertificateDownloader.fetch_by_platform(
|
42
|
-
certificate_id, platform: platform
|
42
|
+
certificate_id, platform: platform
|
43
43
|
)
|
44
44
|
|
45
45
|
expect(certificate.code.to_i).to eq(200)
|
@@ -54,7 +54,7 @@ RSpec.describe Digicert::CertificateDownloader do
|
|
54
54
|
|
55
55
|
stub_digicert_certificate_download_by_format(certificate_id, format)
|
56
56
|
certificate = Digicert::CertificateDownloader.fetch_by_format(
|
57
|
-
certificate_id, format: format
|
57
|
+
certificate_id, format: format
|
58
58
|
)
|
59
59
|
|
60
60
|
expect(certificate.code.to_i).to eq(200)
|
@@ -29,11 +29,11 @@ RSpec.describe Digicert::CertificateRequest do
|
|
29
29
|
it "updates the specified ceritfiicate request status" do
|
30
30
|
request_id = 123_456_789
|
31
31
|
stub_digicert_certificate_request_update_api(
|
32
|
-
request_id, request_status_attributes
|
32
|
+
request_id, request_status_attributes
|
33
33
|
)
|
34
34
|
|
35
35
|
status_update = Digicert::CertificateRequest.update(
|
36
|
-
request_id, request_status_attributes
|
36
|
+
request_id, request_status_attributes
|
37
37
|
)
|
38
38
|
|
39
39
|
expect(status_update.code).to eq("204")
|
@@ -82,7 +82,7 @@ RSpec.describe Digicert::Certificate do
|
|
82
82
|
stub_digicert_certificate_revoke_api(certificate_id, comments: comments)
|
83
83
|
|
84
84
|
revocation = Digicert::Certificate.revoke(
|
85
|
-
certificate_id, comments: comments
|
85
|
+
certificate_id, comments: comments
|
86
86
|
)
|
87
87
|
|
88
88
|
expect(revocation.id).not_to be_nil
|
@@ -4,7 +4,7 @@ RSpec.describe Digicert::ClientCertificate::DigitalSignaturePlus do
|
|
4
4
|
describe ".create" do
|
5
5
|
it "creates a new order for a digital signature plus certificate" do
|
6
6
|
stub_digicert_order_create_api(
|
7
|
-
"client_digital_signature_plus", order_attributes
|
7
|
+
"client_digital_signature_plus", order_attributes
|
8
8
|
)
|
9
9
|
|
10
10
|
order = Digicert::ClientCertificate::DigitalSignaturePlus.create(
|
@@ -4,7 +4,7 @@ RSpec.describe Digicert::ClientCertificate::EmailSecurityPlus do
|
|
4
4
|
describe ".create" do
|
5
5
|
it "creates a new order for a email security plus certificate" do
|
6
6
|
stub_digicert_order_create_api(
|
7
|
-
"client_email_security_plus", order_attributes
|
7
|
+
"client_email_security_plus", order_attributes
|
8
8
|
)
|
9
9
|
|
10
10
|
order = Digicert::ClientCertificate::EmailSecurityPlus.create(
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
RSpec.describe Digicert::ClientCertificate::Premium do
|
4
4
|
describe ".create" do
|
5
5
|
it "creates a new order for a client premium certificate" do
|
6
|
-
stub_digicert_order_create_api("
|
6
|
+
stub_digicert_order_create_api("client_premium", order_attributes)
|
7
7
|
order = Digicert::ClientCertificate::Premium.create(order_attributes)
|
8
8
|
|
9
9
|
expect(order.id).not_to be_nil
|
@@ -38,7 +38,7 @@ RSpec.describe Digicert::Domain do
|
|
38
38
|
describe ".fetch" do
|
39
39
|
it "retrieves the specific domain" do
|
40
40
|
domain_id = 123_456_789
|
41
|
-
filters = { include_dcv: true, include_validation: true}
|
41
|
+
filters = { include_dcv: true, include_validation: true }
|
42
42
|
|
43
43
|
stub_digicert_domain_fetch_api(domain_id, filters)
|
44
44
|
domain = Digicert::Domain.fetch(domain_id, filters)
|
@@ -80,7 +80,7 @@ RSpec.describe Digicert::Domain do
|
|
80
80
|
validations: [
|
81
81
|
{
|
82
82
|
type: "ev",
|
83
|
-
user: { id: 12 }
|
83
|
+
user: { id: 12 },
|
84
84
|
},
|
85
85
|
],
|
86
86
|
dcv: { method: "email" },
|
data/spec/digicert/order_spec.rb
CHANGED
@@ -15,13 +15,27 @@ RSpec.describe Digicert::Order do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe ".all" do
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
context "without any query params" do
|
19
|
+
it "retrieves the list of all certificate orders" do
|
20
|
+
stub_digicert_order_list_api
|
21
|
+
orders = Digicert::Order.all
|
22
|
+
|
23
|
+
expect(orders.first.id).not_to be_nil
|
24
|
+
expect(orders.first.status).to eq("issued")
|
25
|
+
expect(orders.first.certificate.common_name).to eq("digicert.com")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "with specified query params" do
|
30
|
+
it "retrieves the filtered list of certificate orders" do
|
31
|
+
query_params = { limit: 3, offset: 0, sort: "date_created" }
|
32
|
+
stub_digicert_order_list_api(query_params)
|
33
|
+
|
34
|
+
orders = Digicert::Order.all(query_params)
|
21
35
|
|
22
|
-
|
23
|
-
|
24
|
-
|
36
|
+
expect(orders.count).to eq(query_params[:limit])
|
37
|
+
expect(orders.first.certificate.common_name).to eq("digicert.com")
|
38
|
+
end
|
25
39
|
end
|
26
40
|
end
|
27
41
|
|
@@ -61,7 +75,7 @@ RSpec.describe Digicert::Order do
|
|
61
75
|
order.reissue
|
62
76
|
|
63
77
|
expect(
|
64
|
-
Digicert::OrderReissuer
|
78
|
+
Digicert::OrderReissuer,
|
65
79
|
).to have_received(:create).with(order_id: order_id)
|
66
80
|
end
|
67
81
|
end
|
@@ -75,7 +89,7 @@ RSpec.describe Digicert::Order do
|
|
75
89
|
order.duplicate
|
76
90
|
|
77
91
|
expect(
|
78
|
-
Digicert::OrderDuplicator
|
92
|
+
Digicert::OrderDuplicator,
|
79
93
|
).to have_received(:create).with(order_id: order_id)
|
80
94
|
end
|
81
95
|
end
|
@@ -89,7 +103,7 @@ RSpec.describe Digicert::Order do
|
|
89
103
|
order.duplicate_certificates
|
90
104
|
|
91
105
|
expect(
|
92
|
-
Digicert::DuplicateCertificate
|
106
|
+
Digicert::DuplicateCertificate,
|
93
107
|
).to have_received(:all).with(order_id: order_id)
|
94
108
|
end
|
95
109
|
end
|
@@ -105,7 +119,7 @@ RSpec.describe Digicert::Order do
|
|
105
119
|
order.cancel(note: note)
|
106
120
|
|
107
121
|
expect(
|
108
|
-
Digicert::OrderCancellation
|
122
|
+
Digicert::OrderCancellation,
|
109
123
|
).to have_received(:create).with(order_id: order_id, note: note)
|
110
124
|
end
|
111
125
|
end
|
@@ -18,7 +18,7 @@ RSpec.describe Digicert::Request do
|
|
18
18
|
stub_invalid_ping_request_via_get
|
19
19
|
request = Digicert::Request.new(:get, "ping")
|
20
20
|
|
21
|
-
expect{ request.run }.to raise_error(/not_found\|route/)
|
21
|
+
expect { request.run }.to raise_error(/not_found\|route/)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "cgi"
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
RSpec.describe Digicert::Util do
|
5
|
+
describe ".to_query" do
|
6
|
+
context "plain hash with key and value" do
|
7
|
+
it "builds and returns the queryable params" do
|
8
|
+
params = { limit: 10, sort: "date_created" }
|
9
|
+
query_params = Digicert::Util.to_query(params)
|
10
|
+
|
11
|
+
expect(query_params).to eq("limit=10&sort=date_created")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "with nested hash as key" do
|
16
|
+
it "resolves it and returns the queryable params" do
|
17
|
+
params = { limit: 10, filters: { status: "issued", search: "ribose" } }
|
18
|
+
query_params = Digicert::Util.to_query(params)
|
19
|
+
|
20
|
+
expect(
|
21
|
+
CGI.unescape(query_params),
|
22
|
+
).to eq("limit=10&filters[status]=issued&filters[search]=ribose")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -3,7 +3,6 @@ require "spec_helper"
|
|
3
3
|
RSpec.describe "Reissuing Certificate" do
|
4
4
|
describe "reissue" do
|
5
5
|
it "reissues an existing nonexpired certificate", api_call: true do
|
6
|
-
|
7
6
|
# This tests will find the last created certificate order and
|
8
7
|
# then will try to reissue that, but one important thing to note
|
9
8
|
# that digicert only allows expects active certificate to reissue
|
@@ -42,7 +42,7 @@ RSpec.describe "Domain Management" do
|
|
42
42
|
dcv: { method: "email" },
|
43
43
|
name: ribose_test_domain,
|
44
44
|
organization: { id: organization_id },
|
45
|
-
validations: [{ type: "OV", user: { id: administrator_id }}],
|
45
|
+
validations: [{ type: "OV", user: { id: administrator_id } }],
|
46
46
|
}
|
47
47
|
end
|
48
48
|
|
@@ -9,7 +9,7 @@ RSpec.describe "Order client email security plus" do
|
|
9
9
|
# interface with `product_name_id` and required attributes
|
10
10
|
#
|
11
11
|
order_request = Digicert::Order.create(
|
12
|
-
product_name_id, order_attributes
|
12
|
+
product_name_id, order_attributes
|
13
13
|
)
|
14
14
|
|
15
15
|
puts order_request
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Client Premium Certificate" do
|
4
|
+
describe "ordering a client premium certificate", api_call: true do
|
5
|
+
it "creates a new order or a client's premium certificate" do
|
6
|
+
product_name_id = "client_premium"
|
7
|
+
|
8
|
+
# Reqeust a new certificate using the order creation
|
9
|
+
# interface by providing t`name_id` and required attributes
|
10
|
+
#
|
11
|
+
order_request = Digicert::Order.create(
|
12
|
+
product_name_id, order_attributes
|
13
|
+
)
|
14
|
+
|
15
|
+
# Retrieve order details using the order_request id as
|
16
|
+
# it should contains the `certifcate`, so we then can
|
17
|
+
# download the generated certificate
|
18
|
+
#
|
19
|
+
order = Digicert::Order.fetch(order_request.id)
|
20
|
+
|
21
|
+
expect(order.product.name).to eq("Premium")
|
22
|
+
expect(order.certificate.common_name).to eq(common_name)
|
23
|
+
expect(order.organization.display_name).to eq(ribose_inc.display_name)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def common_name
|
28
|
+
"Awesome People"
|
29
|
+
end
|
30
|
+
|
31
|
+
def order_attributes
|
32
|
+
{
|
33
|
+
validity_years: 1,
|
34
|
+
certificate: certificate_attributes,
|
35
|
+
organization: { id: ribose_inc.id },
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def ribose_inc
|
40
|
+
@ribose_inc ||= Digicert::Organization.all.first
|
41
|
+
end
|
42
|
+
|
43
|
+
def certificate_attributes
|
44
|
+
{
|
45
|
+
common_name: common_name,
|
46
|
+
signature_hash: "sha256",
|
47
|
+
emails: [awesomepeople_email],
|
48
|
+
csr: csr_content_for_ribosetest,
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def domain
|
53
|
+
"ribosetest.com"
|
54
|
+
end
|
55
|
+
|
56
|
+
def awesomepeople_email
|
57
|
+
["awesomepeople", domain].join("@")
|
58
|
+
end
|
59
|
+
|
60
|
+
def csr_content_for_ribosetest
|
61
|
+
@csr_content ||= Digicert::CSRGenerator.generate(
|
62
|
+
common_name: common_name, organization: ribose_inc,
|
63
|
+
)
|
64
|
+
end
|
65
|
+
end
|
@@ -9,7 +9,7 @@ RSpec.describe "Order SSl EV Plus" do
|
|
9
9
|
# interface by providing t`name_id` and required attributes
|
10
10
|
#
|
11
11
|
order_request = Digicert::Order.create(
|
12
|
-
product_name_id, order_attributes
|
12
|
+
product_name_id, order_attributes
|
13
13
|
)
|
14
14
|
|
15
15
|
# Retrieve order details using the order_request id as
|
@@ -45,7 +45,7 @@ RSpec.describe "Order SSl EV Plus" do
|
|
45
45
|
common_name: common_name,
|
46
46
|
signature_hash: "sha256",
|
47
47
|
csr: csr_content_for_ribosetest,
|
48
|
-
server_platform: { id: 2 }
|
48
|
+
server_platform: { id: 2 },
|
49
49
|
}
|
50
50
|
end
|
51
51
|
|
@@ -9,7 +9,7 @@ RSpec.describe "Order SSLWildcard" do
|
|
9
9
|
# interface by providing t`name_id` and required attributes
|
10
10
|
#
|
11
11
|
order_request = Digicert::Order.create(
|
12
|
-
product_name_id, order_attributes
|
12
|
+
product_name_id, order_attributes
|
13
13
|
)
|
14
14
|
|
15
15
|
# Retrieve order details using the order_request id as
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require "dotenv/load"
|
2
2
|
require "webmock/rspec"
|
3
3
|
require "bundler/setup"
|
4
|
+
|
4
5
|
require "digicert"
|
6
|
+
require "digicert/rspec"
|
5
7
|
|
6
8
|
Dir["./spec/support/**/*.rb"].sort.each { |file| require file }
|
7
9
|
|
@@ -30,6 +32,4 @@ RSpec.configure do |config|
|
|
30
32
|
Digicert.configuration.debug_mode = true
|
31
33
|
WebMock.allow_net_connect!
|
32
34
|
end
|
33
|
-
|
34
|
-
config.include Digicert::FakeDigicertApi
|
35
35
|
end
|
@@ -2,19 +2,19 @@ module Digicert
|
|
2
2
|
module FakeDigicertApi
|
3
3
|
def stub_digicert_product_list_api
|
4
4
|
stub_api_response(
|
5
|
-
:get, "product", filename: "products", status: 200
|
5
|
+
:get, "product", filename: "products", status: 200
|
6
6
|
)
|
7
7
|
end
|
8
8
|
|
9
9
|
def stub_digicert_product_fetch_api(name_id)
|
10
10
|
stub_api_response(
|
11
|
-
:get, ["product", name_id].join("/"), filename: "product", status: 200
|
11
|
+
:get, ["product", name_id].join("/"), filename: "product", status: 200
|
12
12
|
)
|
13
13
|
end
|
14
14
|
|
15
15
|
def stub_digicert_certificate_request_list_api
|
16
16
|
stub_api_response(
|
17
|
-
:get, "request", filename: "certificate_requests", status: 200
|
17
|
+
:get, "request", filename: "certificate_requests", status: 200
|
18
18
|
)
|
19
19
|
end
|
20
20
|
|
@@ -49,25 +49,31 @@ module Digicert
|
|
49
49
|
|
50
50
|
def stub_digicert_order_fetch_api(order_id)
|
51
51
|
stub_api_response(
|
52
|
-
:get, ["order/certificate", order_id].join("/"), filename: "order"
|
52
|
+
:get, ["order/certificate", order_id].join("/"), filename: "order"
|
53
53
|
)
|
54
54
|
end
|
55
55
|
|
56
|
-
def stub_digicert_order_list_api
|
56
|
+
def stub_digicert_order_list_api(params = {})
|
57
57
|
stub_api_response(
|
58
|
-
:get,
|
58
|
+
:get,
|
59
|
+
path_with_query("order/certificate", params),
|
60
|
+
filename: "orders",
|
61
|
+
status: 200,
|
59
62
|
)
|
60
63
|
end
|
61
64
|
|
62
65
|
def stub_digicert_certificate_order_fetch_api(order_id)
|
63
66
|
stub_api_response(
|
64
|
-
:get, ["order/certificate", order_id].join("/"), filename: "order"
|
67
|
+
:get, ["order/certificate", order_id].join("/"), filename: "order"
|
65
68
|
)
|
66
69
|
end
|
67
70
|
|
68
|
-
def stub_digicert_organization_list_api
|
71
|
+
def stub_digicert_organization_list_api(params = {})
|
69
72
|
stub_api_response(
|
70
|
-
:get,
|
73
|
+
:get,
|
74
|
+
path_with_query("organization", params),
|
75
|
+
filename: "organizations",
|
76
|
+
status: 200,
|
71
77
|
)
|
72
78
|
end
|
73
79
|
|
@@ -83,7 +89,7 @@ module Digicert
|
|
83
89
|
|
84
90
|
def stub_digicert_organization_fetch_api(id)
|
85
91
|
stub_api_response(
|
86
|
-
:get, ["organization", id].join("/"), filename: "organization"
|
92
|
+
:get, ["organization", id].join("/"), filename: "organization"
|
87
93
|
)
|
88
94
|
end
|
89
95
|
|
@@ -117,13 +123,13 @@ module Digicert
|
|
117
123
|
|
118
124
|
def stub_digicert_container_list_api
|
119
125
|
stub_api_response(
|
120
|
-
:get, "container", filename: "containers", status: 200
|
126
|
+
:get, "container", filename: "containers", status: 200
|
121
127
|
)
|
122
128
|
end
|
123
129
|
|
124
130
|
def stub_digicert_container_fetch_api(container_id)
|
125
131
|
stub_api_response(
|
126
|
-
:get, ["container", container_id].join("/"), filename: "container"
|
132
|
+
:get, ["container", container_id].join("/"), filename: "container"
|
127
133
|
)
|
128
134
|
end
|
129
135
|
|
@@ -139,7 +145,7 @@ module Digicert
|
|
139
145
|
|
140
146
|
def stub_digicert_domain_list_api(filters = {})
|
141
147
|
stub_api_response(
|
142
|
-
:get, path_with_query("domain", filters), filename: "domains"
|
148
|
+
:get, path_with_query("domain", filters), filename: "domains"
|
143
149
|
)
|
144
150
|
end
|
145
151
|
|
@@ -283,7 +289,7 @@ module Digicert
|
|
283
289
|
end
|
284
290
|
|
285
291
|
def path_with_query(path, params)
|
286
|
-
query_params =
|
292
|
+
query_params = Digicert::Util.to_query(params)
|
287
293
|
[path, query_params].join("?")
|
288
294
|
end
|
289
295
|
|
@@ -310,13 +316,13 @@ module Digicert
|
|
310
316
|
def api_key_header
|
311
317
|
{
|
312
318
|
"Content-Type" => "application/json",
|
313
|
-
"X-DC-DEVKEY" => Digicert.configuration.api_key
|
319
|
+
"X-DC-DEVKEY" => Digicert.configuration.api_key,
|
314
320
|
}
|
315
321
|
end
|
316
322
|
|
317
323
|
def digicert_fixture(filename)
|
318
324
|
file_name = [filename, "json"].join(".")
|
319
|
-
file_path =
|
325
|
+
file_path = File.join(Digicert.root, "spec", "fixtures", file_name)
|
320
326
|
|
321
327
|
File.read(File.expand_path(file_path, __FILE__))
|
322
328
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digicert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: r509
|
@@ -173,10 +173,12 @@ files:
|
|
173
173
|
- lib/digicert/product.rb
|
174
174
|
- lib/digicert/request.rb
|
175
175
|
- lib/digicert/response.rb
|
176
|
+
- lib/digicert/rspec.rb
|
176
177
|
- lib/digicert/ssl_certificate/base.rb
|
177
178
|
- lib/digicert/ssl_certificate/ssl_ev_plus.rb
|
178
179
|
- lib/digicert/ssl_certificate/ssl_plus.rb
|
179
180
|
- lib/digicert/ssl_certificate/ssl_wildcard.rb
|
181
|
+
- lib/digicert/util.rb
|
180
182
|
- lib/digicert/version.rb
|
181
183
|
- spec/acceptance/certificate_download_spec.rb
|
182
184
|
- spec/acceptance/duplicating_certificate_spec.rb
|
@@ -211,6 +213,7 @@ files:
|
|
211
213
|
- spec/digicert/ssl_certificate/ssl_ev_plus_spec.rb
|
212
214
|
- spec/digicert/ssl_certificate/ssl_plus_spec.rb
|
213
215
|
- spec/digicert/ssl_certificate/ssl_wildcard_spec.rb
|
216
|
+
- spec/digicert/util_spec.rb
|
214
217
|
- spec/fixtures/certificate.pem
|
215
218
|
- spec/fixtures/certificate.zip
|
216
219
|
- spec/fixtures/certificate_request.json
|
@@ -247,6 +250,7 @@ files:
|
|
247
250
|
- spec/requests/container_management_spec.rb
|
248
251
|
- spec/requests/domain_management_spec.rb
|
249
252
|
- spec/requests/order_client_email_security_plus_spec.rb
|
253
|
+
- spec/requests/order_client_premium_certificate_spec.rb
|
250
254
|
- spec/requests/order_management_spec.rb
|
251
255
|
- spec/requests/order_ssl_ev_plus_spec.rb
|
252
256
|
- spec/requests/order_ssl_wildcard_spec.rb
|