mifiel 1.3.1 → 1.4.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +18 -1
- data/.travis.yml +11 -7
- data/Appraisals +5 -0
- data/Gemfile +3 -0
- data/README.md +4 -148
- data/gemfiles/rails_5.gemfile +3 -0
- data/gemfiles/rails_6.gemfile +3 -0
- data/gemfiles/rails_7.gemfile +15 -0
- data/lib/mifiel/base.rb +15 -4
- data/lib/mifiel/certificate.rb +2 -10
- data/lib/mifiel/config.rb +18 -1
- data/lib/mifiel/document.rb +22 -36
- data/lib/mifiel/template.rb +1 -1
- data/lib/mifiel/user.rb +0 -22
- data/lib/mifiel/version.rb +1 -1
- data/lib/mifiel.rb +2 -1
- data/mifiel.gemspec +9 -7
- data/spec/mifiel/base_spec.rb +4 -4
- data/spec/mifiel/certificate_spec.rb +3 -3
- data/spec/mifiel/document_spec.rb +42 -39
- data/spec/mifiel/template_spec.rb +13 -8
- data/spec/mifiel/user_spec.rb +3 -3
- data/spec/spec_helper.rb +1 -1
- data/spec/support/fake_mifiel.rb +11 -11
- metadata +27 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7808cc60c36b233e6dc0ad9a8150e50c7125696a6e7ee71b66c7819196c36c5f
|
4
|
+
data.tar.gz: 7a9ecaeec4311683bdf5b5f878ab871895d83cc810cc4b4164006b731b9b3f54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcb6a68adf72928f3a6db46f4894b8878c023a0ac11cbccd6daca422cfe428288402964661170ef381606d41b5f3fe53c0c2ac3c1aafab335722e213fbce9f7b
|
7
|
+
data.tar.gz: 8088355a100b92b8b793351165c37e710477d61ad112d4da44e1d2c9c26223832190d47ffc9b75cdabf15b776e3e6b897b14431a8a566480c90f248f4f42e0c1
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,10 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rspec
|
3
|
+
|
1
4
|
AllCops:
|
2
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.6
|
6
|
+
NewCops: enable
|
7
|
+
SuggestExtensions: false
|
3
8
|
Exclude:
|
4
9
|
- 'gemfiles/**/*'
|
5
10
|
|
@@ -16,3 +21,15 @@ Metrics/BlockLength:
|
|
16
21
|
Exclude:
|
17
22
|
- 'spec/**/*'
|
18
23
|
- '*.gemspec'
|
24
|
+
|
25
|
+
Style/TrailingCommaInArguments:
|
26
|
+
EnforcedStyleForMultiline: consistent_comma
|
27
|
+
|
28
|
+
Style/TrailingCommaInArrayLiteral:
|
29
|
+
EnforcedStyleForMultiline: consistent_comma
|
30
|
+
|
31
|
+
Style/TrailingCommaInHashLiteral:
|
32
|
+
EnforcedStyleForMultiline: consistent_comma
|
33
|
+
|
34
|
+
RSpec/NestedGroups:
|
35
|
+
Enabled: false
|
data/.travis.yml
CHANGED
@@ -5,11 +5,9 @@ sudo: false
|
|
5
5
|
gemfile:
|
6
6
|
- gemfiles/rails_5.gemfile
|
7
7
|
- gemfiles/rails_6.gemfile
|
8
|
+
- gemfiles/rails_7.gemfile
|
8
9
|
|
9
10
|
rvm:
|
10
|
-
- 2.3
|
11
|
-
- 2.4
|
12
|
-
- 2.5
|
13
11
|
- 2.6
|
14
12
|
- 2.7
|
15
13
|
- 3.0
|
@@ -27,8 +25,14 @@ script:
|
|
27
25
|
|
28
26
|
matrix:
|
29
27
|
exclude:
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
# rails 7 requires ruby > 2.7
|
29
|
+
- rvm: 2.6
|
30
|
+
gemfile: gemfiles/rails_7.gemfile
|
31
|
+
# rails 5 is too old for these ruby versions
|
32
|
+
- rvm: 2.7
|
33
|
+
gemfile: gemfiles/rails_5.gemfile
|
34
|
+
- rvm: 3.0
|
35
|
+
gemfile: gemfiles/rails_5.gemfile
|
36
|
+
- rvm: 3.1
|
37
|
+
gemfile: gemfiles/rails_5.gemfile
|
34
38
|
fast_finish: true
|
data/Appraisals
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -3,10 +3,9 @@
|
|
3
3
|
[![Gem Version][gem-version-image]][gem-version-url]
|
4
4
|
[![Build Status][travis-image]][travis-url]
|
5
5
|
[![Coverage Status][coveralls-image]][coveralls-url]
|
6
|
-
[![security][security-image]][security-url]
|
7
6
|
|
8
7
|
Ruby SDK for [Mifiel](https://www.mifiel.com) API.
|
9
|
-
Please read our [documentation](
|
8
|
+
Please read our [documentation](https://docs.mifiel.com/) for instructions on how to start using the API.
|
10
9
|
|
11
10
|
## Installation
|
12
11
|
|
@@ -26,154 +25,17 @@ Or install it yourself as:
|
|
26
25
|
|
27
26
|
## Usage
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
To start using the API in the Sandbox environment you need to first create an account at [sandbox.mifiel.com](https://sandbox.mifiel.com).
|
32
|
-
|
33
|
-
Once you have an account you will need an APP_ID and an APP_SECRET which you can generate in [sandbox.mifiel.com/access_tokens](https://sandbox.mifiel.com/access_tokens).
|
34
|
-
|
35
|
-
Then you can configure the gem with:
|
28
|
+
Follow the steps in our [documentation](https://docs.mifiel.com/) to create an account and get your access tokens, then you can configure the gem with:
|
36
29
|
|
37
30
|
```ruby
|
38
31
|
Mifiel.config do |config|
|
39
32
|
config.app_id = '<APP_ID>'
|
40
33
|
config.app_secret = '<APP_SECRET>'
|
41
|
-
|
34
|
+
# remove the next line when you wish to use the prod environment
|
35
|
+
config.base_url = 'https://app-sandbox.mifiel.com/api/v1'
|
42
36
|
end
|
43
37
|
```
|
44
38
|
|
45
|
-
Document methods:
|
46
|
-
|
47
|
-
- Find:
|
48
|
-
|
49
|
-
```ruby
|
50
|
-
document = Mifiel::Document.find('id')
|
51
|
-
document.original_hash
|
52
|
-
document.file
|
53
|
-
document.file_signed
|
54
|
-
# ...
|
55
|
-
```
|
56
|
-
|
57
|
-
- Find all:
|
58
|
-
|
59
|
-
```ruby
|
60
|
-
documents = Mifiel::Document.all
|
61
|
-
```
|
62
|
-
|
63
|
-
- Create:
|
64
|
-
|
65
|
-
> Use only **hash** if you dont want us to have the file.<br>
|
66
|
-
> Either **file** or **hash** must be provided.
|
67
|
-
|
68
|
-
```ruby
|
69
|
-
document = Mifiel::Document.create(
|
70
|
-
file: 'path/to/my-file.pdf',
|
71
|
-
signatories: [
|
72
|
-
{ name: 'Signer 1', email: 'signer1@email.com', tax_id: 'AAA010101AAA' },
|
73
|
-
{ name: 'Signer 2', email: 'signer2@email.com', tax_id: 'AAA010102AAA' }
|
74
|
-
]
|
75
|
-
)
|
76
|
-
# if you dont want us to have the PDF, you can just send us
|
77
|
-
# the original_hash and the name of the document. Both are required
|
78
|
-
document = Mifiel::Document.create(
|
79
|
-
hash: Digest::SHA256.hexdigest(File.read('path/to/my-file.pdf')),
|
80
|
-
name: 'my-file.pdf',
|
81
|
-
signatories: [...]
|
82
|
-
)
|
83
|
-
```
|
84
|
-
|
85
|
-
- Save Document related files
|
86
|
-
|
87
|
-
```ruby
|
88
|
-
# save the original file
|
89
|
-
document.save_file('path/to/save/file.pdf')
|
90
|
-
# save the signed file (original file + signatures page)
|
91
|
-
document.save_file_signed('path/to/save/file-signed.pdf')
|
92
|
-
# save the signed xml file
|
93
|
-
document.save_xml('path/to/save/xml.xml')
|
94
|
-
```
|
95
|
-
|
96
|
-
- Sign:
|
97
|
-
+ With a pre-created Certificate
|
98
|
-
|
99
|
-
```ruby
|
100
|
-
certificate = Mifiel::Certificate.find('cert-id')
|
101
|
-
document.sign(certificate_id: certificate.id)
|
102
|
-
```
|
103
|
-
|
104
|
-
+ With a new one
|
105
|
-
|
106
|
-
```ruby
|
107
|
-
document.sign(certificate: File.read('FIEL_AAA010101AAA.cer'))
|
108
|
-
```
|
109
|
-
|
110
|
-
- Delete
|
111
|
-
|
112
|
-
```ruby
|
113
|
-
document.delete
|
114
|
-
```
|
115
|
-
|
116
|
-
Certificate methods:
|
117
|
-
|
118
|
-
- Sat Certificates
|
119
|
-
|
120
|
-
```ruby
|
121
|
-
sat_certificates = Mifiel::Certificate.sat
|
122
|
-
```
|
123
|
-
|
124
|
-
- Find:
|
125
|
-
|
126
|
-
```ruby
|
127
|
-
certificate = Mifiel::Certificate.find('id')
|
128
|
-
certificate.cer_hex
|
129
|
-
certificate.type_of
|
130
|
-
# ...
|
131
|
-
```
|
132
|
-
|
133
|
-
- Find all:
|
134
|
-
|
135
|
-
```ruby
|
136
|
-
certificates = Mifiel::Certificate.all
|
137
|
-
```
|
138
|
-
|
139
|
-
- Create
|
140
|
-
|
141
|
-
```ruby
|
142
|
-
certificate = Mifiel::Certificate.create(
|
143
|
-
file: 'path/to/my-certificate.cer'
|
144
|
-
)
|
145
|
-
```
|
146
|
-
|
147
|
-
- Delete
|
148
|
-
|
149
|
-
```ruby
|
150
|
-
certificate.delete
|
151
|
-
```
|
152
|
-
|
153
|
-
User methods
|
154
|
-
|
155
|
-
- Setup Widget
|
156
|
-
|
157
|
-
```ruby
|
158
|
-
args = {
|
159
|
-
email: 'some@email.com',
|
160
|
-
tax_id: 'AAA010101AAA',
|
161
|
-
callback_url: 'http://some-callback.url'
|
162
|
-
}
|
163
|
-
|
164
|
-
user = Mifiel::User.setup_widget(args)
|
165
|
-
user.widget_id
|
166
|
-
```
|
167
|
-
|
168
|
-
Filtering Results
|
169
|
-
|
170
|
-
Our API returns a JSON list of items, this result can be filtered using a `where` method matching a specified criteria (or matching using regular expressions):
|
171
|
-
|
172
|
-
```ruby
|
173
|
-
document = Mifiel::Document.find('id')
|
174
|
-
document.signers.where(field: /receiver|issuer/, email: 'some@email.com')
|
175
|
-
```
|
176
|
-
|
177
39
|
## Contributing
|
178
40
|
|
179
41
|
1. Fork it ( https://github.com/[my-github-username]/mifiel/fork )
|
@@ -182,15 +44,9 @@ Our API returns a JSON list of items, this result can be filtered using a `where
|
|
182
44
|
4. Push to the branch (`git push origin my-new-feature`)
|
183
45
|
5. Create a new Pull Request
|
184
46
|
|
185
|
-
|
186
47
|
[gem-version-image]: https://badge.fury.io/rb/mifiel.svg
|
187
48
|
[gem-version-url]: https://badge.fury.io/rb/mifiel
|
188
|
-
|
189
|
-
[security-url]: https://hakiri.io/github/Mifiel/ruby-api-client/master
|
190
|
-
[security-image]: https://hakiri.io/github/Mifiel/ruby-api-client/master.svg
|
191
|
-
|
192
49
|
[travis-image]: https://travis-ci.org/Mifiel/ruby-api-client.svg?branch=master
|
193
50
|
[travis-url]: https://travis-ci.org/Mifiel/ruby-api-client
|
194
|
-
|
195
51
|
[coveralls-image]: https://coveralls.io/repos/github/Mifiel/ruby-api-client/badge.svg?branch=master
|
196
52
|
[coveralls-url]: https://coveralls.io/github/Mifiel/ruby-api-client?branch=master
|
data/gemfiles/rails_5.gemfile
CHANGED
data/gemfiles/rails_6.gemfile
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rails", "7"
|
6
|
+
gem "sinatra"
|
7
|
+
|
8
|
+
group :development, :test do
|
9
|
+
gem "coveralls", require: false
|
10
|
+
gem "pry"
|
11
|
+
gem "rubocop"
|
12
|
+
gem "rubocop-rspec"
|
13
|
+
end
|
14
|
+
|
15
|
+
gemspec path: "../"
|
data/lib/mifiel/base.rb
CHANGED
@@ -1,19 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'rest-client'
|
4
|
-
|
5
3
|
module Mifiel
|
6
4
|
class Base < Flexirest::Base
|
7
5
|
after_request :rescue_errors
|
8
6
|
|
9
7
|
def rescue_errors(_name, response)
|
10
|
-
|
8
|
+
case response.status
|
9
|
+
when (400..499)
|
11
10
|
result = JSON.parse(response.body)
|
12
11
|
message = result['errors'] || [result['error']]
|
13
12
|
raise BadRequestError, message.to_a.join(', ')
|
14
|
-
|
13
|
+
when (500..599)
|
15
14
|
raise ServerError, "Could not process your request: status #{response.status}"
|
16
15
|
end
|
17
16
|
end
|
17
|
+
|
18
|
+
def self.process_request(path, mthd, payload: nil, type: false)
|
19
|
+
url = "#{Mifiel.config.base_url}/#{path.gsub(%r{^/}, '')}"
|
20
|
+
options = { request_body_type: type }
|
21
|
+
options[:plain] = true if type == :plain
|
22
|
+
_request(
|
23
|
+
url,
|
24
|
+
mthd,
|
25
|
+
payload,
|
26
|
+
options,
|
27
|
+
)
|
28
|
+
end
|
18
29
|
end
|
19
30
|
end
|
data/lib/mifiel/certificate.rb
CHANGED
@@ -8,16 +8,8 @@ module Mifiel
|
|
8
8
|
get :sat, '/keys/sat'
|
9
9
|
|
10
10
|
def self.create(cer_file)
|
11
|
-
|
12
|
-
|
13
|
-
method: :post,
|
14
|
-
payload: {
|
15
|
-
cer_file: File.new(cer_file)
|
16
|
-
},
|
17
|
-
ssl_version: 'SSLv23'
|
18
|
-
)
|
19
|
-
req = ApiAuth.sign!(rest_request, Mifiel.config.app_id, Mifiel.config.app_secret)
|
20
|
-
Mifiel::Certificate.new(JSON.parse(req.execute))
|
11
|
+
payload = { cer_file: File.new(cer_file) }
|
12
|
+
process_request('/keys', :post, payload: payload, type: :form_multipart)
|
21
13
|
end
|
22
14
|
end
|
23
15
|
end
|
data/lib/mifiel/config.rb
CHANGED
@@ -30,8 +30,25 @@ module Mifiel
|
|
30
30
|
|
31
31
|
def set_api_auth_credentials
|
32
32
|
Flexirest::Base.base_url = base_url
|
33
|
-
Flexirest::Base.api_auth_credentials(
|
33
|
+
Flexirest::Base.api_auth_credentials(
|
34
|
+
app_id,
|
35
|
+
app_secret,
|
36
|
+
with_http_method: true,
|
37
|
+
)
|
34
38
|
Flexirest::Base.request_body_type = :json
|
39
|
+
Flexirest::Base.faraday_config do |faraday|
|
40
|
+
faraday.headers['User-Agent'] = user_agent
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def user_agent
|
45
|
+
[
|
46
|
+
"#{Gem::Platform::RUBY.upcase}/#{RUBY_VERSION}",
|
47
|
+
"mifiel/#{Mifiel::VERSION}",
|
48
|
+
"faraday/#{Faraday::VERSION}",
|
49
|
+
# there is no easy way to get OS version in ruby
|
50
|
+
"(#{RUBY_PLATFORM}/-)",
|
51
|
+
].join(' ')
|
35
52
|
end
|
36
53
|
end
|
37
54
|
|
data/lib/mifiel/document.rb
CHANGED
@@ -7,12 +7,23 @@ module Mifiel
|
|
7
7
|
class Document < Mifiel::Base
|
8
8
|
get :all, '/documents'
|
9
9
|
get :find, '/documents/:id'
|
10
|
+
|
11
|
+
get :raw_file, '/documents/:id/file', plain: true
|
12
|
+
# @deprecated in favor of raw_file
|
13
|
+
get :raw_data, '/documents/:id/file', plain: true
|
14
|
+
|
15
|
+
get :raw_file_signed, '/documents/:id/file_signed', plain: true
|
16
|
+
# @deprecated in favor of raw_file_signed
|
17
|
+
get :raw_signed_data, '/documents/:id/file_signed', plain: true
|
18
|
+
|
19
|
+
get :raw_xml, '/documents/:id/xml', plain: true
|
20
|
+
|
10
21
|
put :save, '/documents/:id'
|
11
22
|
delete :delete, '/documents/:id'
|
12
23
|
post :create_from_template, '/templates/:template_id/generate_document', timeout: 60
|
13
24
|
post :create_many_from_template, '/templates/:template_id/generate_documents', timeout: 60
|
14
25
|
|
15
|
-
# rubocop:disable Metrics/MethodLength
|
26
|
+
# rubocop:disable Metrics/MethodLength
|
16
27
|
def self.create(args)
|
17
28
|
signatories = args[:signatories]
|
18
29
|
file = args[:file]
|
@@ -27,55 +38,30 @@ module Mifiel
|
|
27
38
|
callback_url: callback_url,
|
28
39
|
file: (File.new(file) if file),
|
29
40
|
original_hash: hash,
|
30
|
-
name: name
|
41
|
+
name: name,
|
31
42
|
}
|
32
|
-
payload = args.merge(payload)
|
33
|
-
payload
|
34
|
-
response = process_request('/documents', :post, payload)
|
35
|
-
Mifiel::Document.new(JSON.parse(response))
|
43
|
+
payload = args.merge(payload).compact
|
44
|
+
process_request('/documents', :post, payload: payload, type: :form_multipart)
|
36
45
|
end
|
37
|
-
# rubocop:enable Metrics/MethodLength
|
46
|
+
# rubocop:enable Metrics/MethodLength
|
38
47
|
|
39
|
-
|
48
|
+
# @deprecated
|
49
|
+
def request_signature(email, cc: nil)
|
40
50
|
params = { email: email }
|
41
51
|
params[:cc] = cc if cc.is_a?(Array)
|
42
|
-
Mifiel::
|
43
|
-
end
|
44
|
-
|
45
|
-
def raw_data
|
46
|
-
response = Mifiel::Document.process_request("/documents/#{id}/file", :get)
|
47
|
-
|
48
|
-
response.body
|
52
|
+
Mifiel::Base.process_request("/documents/#{id}/request_signature", :post, payload: params)
|
49
53
|
end
|
50
54
|
|
51
55
|
def save_file(path)
|
52
|
-
File.
|
53
|
-
end
|
54
|
-
|
55
|
-
def raw_signed_data
|
56
|
-
response = Mifiel::Document.process_request("/documents/#{id}/file_signed", :get)
|
57
|
-
|
58
|
-
response.body
|
56
|
+
File.binwrite(path, raw_file)
|
59
57
|
end
|
60
58
|
|
61
59
|
def save_file_signed(path)
|
62
|
-
File.
|
60
|
+
File.binwrite(path, raw_file_signed)
|
63
61
|
end
|
64
62
|
|
65
63
|
def save_xml(path)
|
66
|
-
|
67
|
-
File.open(path, 'w') { |file| file.write(response) }
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.process_request(path, method, payload = nil)
|
71
|
-
rest_request = RestClient::Request.new(
|
72
|
-
url: "#{Mifiel.config.base_url}/#{path.gsub(%r{^\/}, '')}",
|
73
|
-
method: method,
|
74
|
-
payload: payload,
|
75
|
-
ssl_version: 'SSLv23'
|
76
|
-
)
|
77
|
-
req = ApiAuth.sign!(rest_request, Mifiel.config.app_id, Mifiel.config.app_secret)
|
78
|
-
req.execute
|
64
|
+
File.write(path, raw_xml)
|
79
65
|
end
|
80
66
|
|
81
67
|
def self.build_signatories(signatories)
|
data/lib/mifiel/template.rb
CHANGED
data/lib/mifiel/user.rb
CHANGED
@@ -3,27 +3,5 @@
|
|
3
3
|
module Mifiel
|
4
4
|
class User < Mifiel::Base
|
5
5
|
post :setup_widget, '/users/setup-widget'
|
6
|
-
|
7
|
-
def self.setup_widget(args) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
8
|
-
email = args[:email]
|
9
|
-
tax_id = args[:tax_id]
|
10
|
-
callback_url = args[:callback_url]
|
11
|
-
|
12
|
-
raise ArgumentError, 'Email must be provided' unless email
|
13
|
-
raise ArgumentError, 'Tax id must be provided' unless tax_id
|
14
|
-
|
15
|
-
rest_request = RestClient::Request.new(
|
16
|
-
url: "#{Mifiel.config.base_url}/users/setup-widget",
|
17
|
-
method: :post,
|
18
|
-
payload: {
|
19
|
-
email: email,
|
20
|
-
tax_id: tax_id,
|
21
|
-
callback_url: callback_url
|
22
|
-
},
|
23
|
-
ssl_version: 'SSLv23'
|
24
|
-
)
|
25
|
-
req = ApiAuth.sign!(rest_request, Mifiel.config.app_id, Mifiel.config.app_secret)
|
26
|
-
Mifiel::User.new(JSON.parse(req.execute))
|
27
|
-
end
|
28
6
|
end
|
29
7
|
end
|
data/lib/mifiel/version.rb
CHANGED
data/lib/mifiel.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'flexirest'
|
4
|
+
require 'mifiel/version'
|
4
5
|
|
5
6
|
module Mifiel
|
6
7
|
require 'mifiel/errors'
|
@@ -11,7 +12,7 @@ module Mifiel
|
|
11
12
|
autoload :Config, 'mifiel/config'
|
12
13
|
autoload :User, 'mifiel/user'
|
13
14
|
|
14
|
-
BASE_URL = 'https://
|
15
|
+
BASE_URL = 'https://app.mifiel.com/api/v1'
|
15
16
|
|
16
17
|
def self.config
|
17
18
|
if block_given?
|
data/mifiel.gemspec
CHANGED
@@ -16,12 +16,14 @@ Gem::Specification.new do |spec|
|
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0")
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
19
|
spec.require_paths = ['lib']
|
21
|
-
spec.required_ruby_version = '>= 2.
|
20
|
+
spec.required_ruby_version = '>= 2.6'
|
22
21
|
|
23
22
|
spec.add_runtime_dependency 'activesupport'
|
24
|
-
|
23
|
+
|
24
|
+
# 1.4 fixes a security MITM issue
|
25
|
+
# 2.5 is actually a breaking change: it changes the MD5 header
|
26
|
+
spec.add_runtime_dependency 'api-auth', '>= 1.4', '< 2.5'
|
25
27
|
spec.add_runtime_dependency 'flexirest', '~> 1.6'
|
26
28
|
spec.add_runtime_dependency 'json', '>= 1.8'
|
27
29
|
spec.add_runtime_dependency 'rest-client', '>= 1.8'
|
@@ -29,10 +31,10 @@ Gem::Specification.new do |spec|
|
|
29
31
|
spec.add_development_dependency 'appraisal'
|
30
32
|
spec.add_development_dependency 'bump', '~> 0.5', '>= 0.5.3'
|
31
33
|
spec.add_development_dependency 'bundler'
|
32
|
-
spec.add_development_dependency 'rake'
|
33
|
-
spec.add_development_dependency 'rspec'
|
34
|
-
spec.add_development_dependency '
|
35
|
-
spec.add_development_dependency 'simplecov', '~> 0.21'
|
34
|
+
spec.add_development_dependency 'rake'
|
35
|
+
spec.add_development_dependency 'rspec'
|
36
|
+
spec.add_development_dependency 'simplecov'
|
36
37
|
spec.add_development_dependency 'sinatra'
|
37
38
|
spec.add_development_dependency 'webmock'
|
39
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
38
40
|
end
|
data/spec/mifiel/base_spec.rb
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
describe Mifiel::Base do
|
4
4
|
describe 'rescue_errors' do
|
5
5
|
describe 'when bad request' do
|
6
|
-
it '
|
7
|
-
base =
|
6
|
+
it 'raises error' do
|
7
|
+
base = described_class.new
|
8
8
|
expect do
|
9
9
|
base.rescue_errors('blah', FakeResponse.new(400))
|
10
10
|
end.to raise_error(Mifiel::BadRequestError)
|
@@ -12,8 +12,8 @@ describe Mifiel::Base do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
describe 'when server error' do
|
15
|
-
it '
|
16
|
-
base =
|
15
|
+
it 'raises error' do
|
16
|
+
base = described_class.new
|
17
17
|
expect do
|
18
18
|
base.rescue_errors('blah', FakeResponse.new(500))
|
19
19
|
end.to raise_error(Mifiel::ServerError)
|
@@ -3,11 +3,11 @@
|
|
3
3
|
describe Mifiel::Certificate do
|
4
4
|
describe '#create' do
|
5
5
|
let(:certificate) do
|
6
|
-
|
7
|
-
'spec/fixtures/FIEL_AAA010101AAA.cer'
|
6
|
+
described_class.create(
|
7
|
+
'spec/fixtures/FIEL_AAA010101AAA.cer',
|
8
8
|
)
|
9
9
|
end
|
10
10
|
|
11
|
-
it { expect(certificate).to be_a(
|
11
|
+
it { expect(certificate).to be_a(described_class) }
|
12
12
|
end
|
13
13
|
end
|
@@ -1,65 +1,65 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
describe Mifiel::Document do
|
4
|
-
let
|
5
|
-
let
|
6
|
-
let
|
4
|
+
let(:certificate) { File.read('spec/fixtures/FIEL_AAA010101AAA.cer') }
|
5
|
+
let(:private_key) { File.read('spec/fixtures/FIEL_AAA010101AAA.key') }
|
6
|
+
let(:private_key_pass) { '12345678a' }
|
7
7
|
|
8
8
|
describe '#create' do
|
9
9
|
context 'with a document' do
|
10
10
|
let(:document) do
|
11
|
-
|
11
|
+
described_class.create(
|
12
12
|
file: 'spec/fixtures/example.pdf',
|
13
13
|
signatories: [
|
14
14
|
{ name: 'Signer 1', email: 'signer1@email.com', tax_id: 'AAA010101AAA' },
|
15
|
-
{ name: 'Signer 2', email: 'signer2@email.com', tax_id: 'AAA010102AAA' }
|
16
|
-
]
|
15
|
+
{ name: 'Signer 2', email: 'signer2@email.com', tax_id: 'AAA010102AAA' },
|
16
|
+
],
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
20
|
-
it { expect(document).to be_a(
|
20
|
+
it { expect(document).to be_a(described_class) }
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
describe 'from template' do
|
24
24
|
let!(:template_id) { 'c6c29866-7fd6-4f77-9ecd-eae8bc3a772a' }
|
25
25
|
let!(:document) do
|
26
|
-
|
26
|
+
described_class.create_from_template(
|
27
27
|
template_id: template_id,
|
28
28
|
fields: {
|
29
|
-
name: 'some'
|
29
|
+
name: 'some',
|
30
30
|
},
|
31
31
|
signatories: [{
|
32
32
|
name: 'Signer',
|
33
|
-
email: 'signer@email.com'
|
33
|
+
email: 'signer@email.com',
|
34
34
|
}, {
|
35
35
|
name: 'Signer',
|
36
|
-
email: 'signer@email.com'
|
37
|
-
}]
|
36
|
+
email: 'signer@email.com',
|
37
|
+
},],
|
38
38
|
)
|
39
39
|
end
|
40
40
|
|
41
|
-
it { expect(document).to be_a
|
41
|
+
it { expect(document).to be_a described_class }
|
42
42
|
end
|
43
43
|
|
44
|
-
|
44
|
+
describe 'many from template' do
|
45
45
|
let!(:template_id) { 'c6c29866-7fd6-4f77-9ecd-eae8bc3a772a' }
|
46
46
|
let!(:documents) do
|
47
|
-
|
47
|
+
described_class.create_many_from_template(
|
48
48
|
template_id: template_id,
|
49
49
|
callback_url: 'http://some-callback.url/mifiel',
|
50
50
|
identifier: 'name',
|
51
51
|
documents: [{
|
52
52
|
fields: {
|
53
|
-
name: 'Some Name'
|
53
|
+
name: 'Some Name',
|
54
54
|
},
|
55
55
|
signatories: [{
|
56
56
|
name: 'Signer',
|
57
|
-
email: 'signer@email.com'
|
57
|
+
email: 'signer@email.com',
|
58
58
|
}, {
|
59
59
|
name: 'Signer',
|
60
|
-
email: 'signer@email.com'
|
61
|
-
}]
|
62
|
-
}]
|
60
|
+
email: 'signer@email.com',
|
61
|
+
},],
|
62
|
+
}],
|
63
63
|
)
|
64
64
|
end
|
65
65
|
|
@@ -68,29 +68,30 @@ describe Mifiel::Document do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
describe 'working with a document' do
|
71
|
-
let!(:document) {
|
71
|
+
let!(:document) { described_class.all.first }
|
72
72
|
|
73
|
-
describe '#
|
73
|
+
describe '#raw_file' do
|
74
74
|
let(:document_content) { 'some-pdf-formatted-string' }
|
75
75
|
|
76
|
-
it '
|
77
|
-
expect(document.
|
76
|
+
it 'gets the file raw data' do
|
77
|
+
expect(document.raw_file).to eq document_content
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
describe '#
|
81
|
+
describe '#raw_file_signed' do
|
82
82
|
let(:document_content) { 'some-pdf-formatted-string' }
|
83
83
|
|
84
|
-
it '
|
85
|
-
expect(document.
|
84
|
+
it 'gets the file raw signed data' do
|
85
|
+
expect(document.raw_file_signed).to eq document_content
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
describe '#save_file' do
|
90
90
|
let!(:path) { 'tmp/the-file.pdf' }
|
91
|
-
before { File.unlink(path) if File.exist?(path) }
|
92
91
|
|
93
|
-
|
92
|
+
before { FileUtils.rm_f(path) }
|
93
|
+
|
94
|
+
it 'gets the file' do
|
94
95
|
document.save_file(path)
|
95
96
|
expect(File.exist?(path)).to be true
|
96
97
|
end
|
@@ -98,9 +99,10 @@ describe Mifiel::Document do
|
|
98
99
|
|
99
100
|
describe '#save_file_signed' do
|
100
101
|
let!(:path) { 'tmp/the-file-signed.pdf' }
|
101
|
-
before { File.unlink(path) if File.exist?(path) }
|
102
102
|
|
103
|
-
|
103
|
+
before { FileUtils.rm_f(path) }
|
104
|
+
|
105
|
+
it 'gets the file' do
|
104
106
|
document.save_file_signed(path)
|
105
107
|
expect(File.exist?(path)).to be true
|
106
108
|
end
|
@@ -108,9 +110,10 @@ describe Mifiel::Document do
|
|
108
110
|
|
109
111
|
describe '#save_xml' do
|
110
112
|
let!(:path) { 'tmp/the-xml.xml' }
|
111
|
-
before { File.unlink(path) if File.exist?(path) }
|
112
113
|
|
113
|
-
|
114
|
+
before { FileUtils.rm_f(path) }
|
115
|
+
|
116
|
+
it 'gets the file' do
|
114
117
|
document.save_xml(path)
|
115
118
|
expect(File.exist?(path)).to be true
|
116
119
|
end
|
@@ -119,7 +122,7 @@ describe Mifiel::Document do
|
|
119
122
|
describe '#request_signature' do
|
120
123
|
let!(:error_body) { { errors: ['some error'] }.to_json }
|
121
124
|
|
122
|
-
it
|
125
|
+
it do
|
123
126
|
expect do
|
124
127
|
document.request_signature('some@email.com')
|
125
128
|
end.not_to raise_error
|
@@ -127,11 +130,11 @@ describe Mifiel::Document do
|
|
127
130
|
|
128
131
|
context 'when bad request' do
|
129
132
|
before do
|
130
|
-
url = %r{mifiel.com
|
133
|
+
url = %r{mifiel.com/api/v1/documents/#{document.id}/request_signature}
|
131
134
|
stub_request(:post, url).to_return(body: error_body, status: 404)
|
132
135
|
end
|
133
136
|
|
134
|
-
it
|
137
|
+
it do
|
135
138
|
expect do
|
136
139
|
document.request_signature('some@email.com')
|
137
140
|
end.to raise_error(Mifiel::BadRequestError)
|
@@ -140,11 +143,11 @@ describe Mifiel::Document do
|
|
140
143
|
|
141
144
|
context 'when server error' do
|
142
145
|
before do
|
143
|
-
url = %r{mifiel.com
|
146
|
+
url = %r{mifiel.com/api/v1/documents/#{document.id}/request_signature}
|
144
147
|
stub_request(:post, url).to_return(body: error_body, status: 500)
|
145
148
|
end
|
146
149
|
|
147
|
-
it
|
150
|
+
it do
|
148
151
|
expect do
|
149
152
|
document.request_signature('some@email.com')
|
150
153
|
end.to raise_error(Mifiel::ServerError)
|
@@ -4,35 +4,40 @@ describe Mifiel::Template do
|
|
4
4
|
let!(:template_id) { 'bb7d65b4-47f1-470e-85e4-22ddae86f9ea' }
|
5
5
|
|
6
6
|
shared_examples 'a valid template' do
|
7
|
-
it { expect(template).to be_a(
|
7
|
+
it { expect(template).to be_a(described_class) }
|
8
8
|
it { expect(template).to respond_to(:id) }
|
9
9
|
it { expect(template).to respond_to(:name) }
|
10
10
|
end
|
11
11
|
|
12
12
|
describe '#create' do
|
13
|
-
let
|
14
|
-
|
13
|
+
let(:template) do
|
14
|
+
described_class.create(
|
15
15
|
name: 'Some Template',
|
16
16
|
content: '<div>Some <field name="name" type="string">NAME</field></div>',
|
17
17
|
header: 'Genaros Header',
|
18
|
-
footer: 'Genaros Footer'
|
18
|
+
footer: 'Genaros Footer',
|
19
19
|
)
|
20
20
|
end
|
21
|
+
|
21
22
|
it_behaves_like 'a valid template'
|
22
23
|
end
|
23
24
|
|
24
25
|
describe '#find' do
|
25
|
-
let!(:template) {
|
26
|
+
let!(:template) { described_class.find(template_id) }
|
26
27
|
|
27
28
|
it_behaves_like 'a valid template'
|
28
29
|
it { expect(template.id).to eq(template_id) }
|
29
30
|
end
|
30
31
|
|
31
32
|
describe '#all' do
|
32
|
-
|
33
|
-
|
33
|
+
let(:templates) { described_class.all }
|
34
|
+
|
35
|
+
it 'responds with many templates' do
|
34
36
|
expect(templates.count).to be > 0
|
35
|
-
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'responds with a Template' do
|
40
|
+
expect(templates.first).to be_a(described_class)
|
36
41
|
end
|
37
42
|
end
|
38
43
|
end
|
data/spec/mifiel/user_spec.rb
CHANGED
@@ -3,14 +3,14 @@
|
|
3
3
|
describe Mifiel::User do
|
4
4
|
describe '#setup_widget' do
|
5
5
|
let(:user) do
|
6
|
-
|
6
|
+
described_class.setup_widget(
|
7
7
|
email: 'user@email.com',
|
8
8
|
tax_id: 'AAA010101AAA',
|
9
|
-
callback_url: 'http://some-callback.url/mifiel'
|
9
|
+
callback_url: 'http://some-callback.url/mifiel',
|
10
10
|
)
|
11
11
|
end
|
12
12
|
|
13
13
|
it { expect(user.success).to be_truthy }
|
14
|
-
it { expect(user.widget_id).
|
14
|
+
it { expect(user.widget_id).not_to be_nil }
|
15
15
|
end
|
16
16
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/fake_mifiel.rb
CHANGED
@@ -8,7 +8,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
8
8
|
status 200
|
9
9
|
[
|
10
10
|
key,
|
11
|
-
key
|
11
|
+
key,
|
12
12
|
].to_json
|
13
13
|
end
|
14
14
|
|
@@ -17,7 +17,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
17
17
|
status 200
|
18
18
|
[
|
19
19
|
template,
|
20
|
-
template
|
20
|
+
template,
|
21
21
|
].to_json
|
22
22
|
end
|
23
23
|
|
@@ -56,7 +56,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
56
56
|
status 200
|
57
57
|
[
|
58
58
|
document,
|
59
|
-
document
|
59
|
+
document,
|
60
60
|
].to_json
|
61
61
|
end
|
62
62
|
|
@@ -68,7 +68,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
68
68
|
original_hash: Digest::SHA256.hexdigest(params[:file][:tempfile].read),
|
69
69
|
file_file_name: params[:file][:filename],
|
70
70
|
signed: false,
|
71
|
-
signed_at: nil
|
71
|
+
signed_at: nil,
|
72
72
|
).to_json
|
73
73
|
end
|
74
74
|
|
@@ -76,7 +76,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
76
76
|
content_type :json
|
77
77
|
status 200
|
78
78
|
document(
|
79
|
-
id: params[:id]
|
79
|
+
id: params[:id],
|
80
80
|
).to_json
|
81
81
|
end
|
82
82
|
|
@@ -113,7 +113,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
113
113
|
{
|
114
114
|
id: args[:id] || SecureRandom.uuid,
|
115
115
|
name: 'some-template',
|
116
|
-
content: '<div><field name="name">NAME</field></div>'
|
116
|
+
content: '<div><field name="name">NAME</field></div>',
|
117
117
|
}
|
118
118
|
end
|
119
119
|
|
@@ -126,7 +126,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
126
126
|
owner: 'JORGE MORALES MENDEZ',
|
127
127
|
tax_id: 'MOMJ811012643',
|
128
128
|
expires_at: '2017-04-28T19:43:23.000Z',
|
129
|
-
expired: false
|
129
|
+
expired: false,
|
130
130
|
}
|
131
131
|
end
|
132
132
|
|
@@ -142,7 +142,7 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
142
142
|
status: [1, 'Firmado'],
|
143
143
|
owner: {
|
144
144
|
email: 'signer1@email.com',
|
145
|
-
name: 'Jorge Morales'
|
145
|
+
name: 'Jorge Morales',
|
146
146
|
},
|
147
147
|
file: "/api/v1/documents/#{id}/file",
|
148
148
|
file_download: "/api/v1/documents/#{id}/file?download=true",
|
@@ -158,9 +158,9 @@ class FakeMifiel < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
158
158
|
signature: '77cd5156779c..4e276ef1056c1de11b7f70bed28',
|
159
159
|
user: {
|
160
160
|
email: 'signer1@email.com',
|
161
|
-
name: 'Jorge Morales'
|
162
|
-
}
|
163
|
-
}]
|
161
|
+
name: 'Jorge Morales',
|
162
|
+
},
|
163
|
+
}],
|
164
164
|
}
|
165
165
|
end
|
166
166
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mifiel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genaro Madrid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,16 +28,22 @@ dependencies:
|
|
28
28
|
name: api-auth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.4'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '2.5'
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.4'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.5'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: flexirest
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,58 +138,44 @@ dependencies:
|
|
132
138
|
name: rake
|
133
139
|
requirement: !ruby/object:Gem::Requirement
|
134
140
|
requirements:
|
135
|
-
- - "
|
141
|
+
- - ">="
|
136
142
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
143
|
+
version: '0'
|
138
144
|
type: :development
|
139
145
|
prerelease: false
|
140
146
|
version_requirements: !ruby/object:Gem::Requirement
|
141
147
|
requirements:
|
142
|
-
- - "
|
148
|
+
- - ">="
|
143
149
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
150
|
+
version: '0'
|
145
151
|
- !ruby/object:Gem::Dependency
|
146
152
|
name: rspec
|
147
153
|
requirement: !ruby/object:Gem::Requirement
|
148
154
|
requirements:
|
149
|
-
- - "
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: '3.10'
|
152
|
-
type: :development
|
153
|
-
prerelease: false
|
154
|
-
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
requirements:
|
156
|
-
- - "~>"
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: '3.10'
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: rubocop
|
161
|
-
requirement: !ruby/object:Gem::Requirement
|
162
|
-
requirements:
|
163
|
-
- - "~>"
|
155
|
+
- - ">="
|
164
156
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
157
|
+
version: '0'
|
166
158
|
type: :development
|
167
159
|
prerelease: false
|
168
160
|
version_requirements: !ruby/object:Gem::Requirement
|
169
161
|
requirements:
|
170
|
-
- - "
|
162
|
+
- - ">="
|
171
163
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
164
|
+
version: '0'
|
173
165
|
- !ruby/object:Gem::Dependency
|
174
166
|
name: simplecov
|
175
167
|
requirement: !ruby/object:Gem::Requirement
|
176
168
|
requirements:
|
177
|
-
- - "
|
169
|
+
- - ">="
|
178
170
|
- !ruby/object:Gem::Version
|
179
|
-
version: '0
|
171
|
+
version: '0'
|
180
172
|
type: :development
|
181
173
|
prerelease: false
|
182
174
|
version_requirements: !ruby/object:Gem::Requirement
|
183
175
|
requirements:
|
184
|
-
- - "
|
176
|
+
- - ">="
|
185
177
|
- !ruby/object:Gem::Version
|
186
|
-
version: '0
|
178
|
+
version: '0'
|
187
179
|
- !ruby/object:Gem::Dependency
|
188
180
|
name: sinatra
|
189
181
|
requirement: !ruby/object:Gem::Requirement
|
@@ -232,6 +224,7 @@ files:
|
|
232
224
|
- bump
|
233
225
|
- gemfiles/rails_5.gemfile
|
234
226
|
- gemfiles/rails_6.gemfile
|
227
|
+
- gemfiles/rails_7.gemfile
|
235
228
|
- lib/mifiel.rb
|
236
229
|
- lib/mifiel/base.rb
|
237
230
|
- lib/mifiel/certificate.rb
|
@@ -256,7 +249,8 @@ files:
|
|
256
249
|
homepage: https://www.mifiel.com
|
257
250
|
licenses:
|
258
251
|
- MIT
|
259
|
-
metadata:
|
252
|
+
metadata:
|
253
|
+
rubygems_mfa_required: 'true'
|
260
254
|
post_install_message:
|
261
255
|
rdoc_options: []
|
262
256
|
require_paths:
|
@@ -265,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
265
259
|
requirements:
|
266
260
|
- - ">="
|
267
261
|
- !ruby/object:Gem::Version
|
268
|
-
version: '2.
|
262
|
+
version: '2.6'
|
269
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
270
264
|
requirements:
|
271
265
|
- - ">="
|
@@ -276,14 +270,4 @@ rubygems_version: 3.1.6
|
|
276
270
|
signing_key:
|
277
271
|
specification_version: 4
|
278
272
|
summary: Ruby SDK for mifiel.com.
|
279
|
-
test_files:
|
280
|
-
- spec/fixtures/FIEL_AAA010101AAA.cer
|
281
|
-
- spec/fixtures/FIEL_AAA010101AAA.key
|
282
|
-
- spec/fixtures/example.pdf
|
283
|
-
- spec/mifiel/base_spec.rb
|
284
|
-
- spec/mifiel/certificate_spec.rb
|
285
|
-
- spec/mifiel/document_spec.rb
|
286
|
-
- spec/mifiel/template_spec.rb
|
287
|
-
- spec/mifiel/user_spec.rb
|
288
|
-
- spec/spec_helper.rb
|
289
|
-
- spec/support/fake_mifiel.rb
|
273
|
+
test_files: []
|