Initial commit
This commit is contained in:
101
spec/api/v2/management/documents_spec.rb
Normal file
101
spec/api/v2/management/documents_spec.rb
Normal file
@@ -0,0 +1,101 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe API::V2::Management::Documents, type: :request do
|
||||
before do
|
||||
defaults_for_management_api_v2_security_configuration!
|
||||
management_api_v2_security_configuration.merge! \
|
||||
scopes: {
|
||||
write_documents: { permitted_signers: %i[alex jeff], mandatory_signers: %i[alex] },
|
||||
}
|
||||
end
|
||||
|
||||
let!(:create_admin_permission) do
|
||||
create :permission,
|
||||
role: 'admin'
|
||||
end
|
||||
let!(:create_member_permission) do
|
||||
create :permission,
|
||||
role: 'member'
|
||||
end
|
||||
let!(:user) { create(:user, :with_profile) }
|
||||
|
||||
describe 'Show user info' do
|
||||
let(:data) do
|
||||
{
|
||||
scope: :write_documents
|
||||
}
|
||||
end
|
||||
let!(:image) { fixture_file_upload('/files/documents_test.jpg', 'image/jpg') }
|
||||
let(:signers) { %i[alex jeff] }
|
||||
let(:params) do
|
||||
{
|
||||
doc_type: 'Passport',
|
||||
doc_expire: '3020-01-22',
|
||||
doc_number: 'AA1234BB',
|
||||
upload: [
|
||||
image
|
||||
]
|
||||
}
|
||||
end
|
||||
let!(:optional_params) do
|
||||
{
|
||||
metadata: {
|
||||
country: Faker::Address.country
|
||||
}
|
||||
}
|
||||
end
|
||||
let(:do_request) do
|
||||
post_json '/api/v2/management/documents',
|
||||
multisig_jwt_management_api_v2({ data: data }, *signers)
|
||||
end
|
||||
|
||||
let(:params) do {
|
||||
uid: user.uid,
|
||||
doc_type: 'Passport',
|
||||
filename: 'documents_test',
|
||||
file_ext: '.jpg',
|
||||
doc_expire: '3020-01-22',
|
||||
doc_number: 'AA1234BB',
|
||||
upload: Base64.strict_encode64(File.open('spec/fixtures/files/documents_test.jpg').read)
|
||||
}
|
||||
end
|
||||
|
||||
it 'push documents to user' do
|
||||
post_json '/api/v2/management/documents', multisig_jwt_management_api_v2({ data: params }, *signers)
|
||||
|
||||
expect(response.status).to eq 201
|
||||
expect(user.documents.length).to eq(1)
|
||||
end
|
||||
|
||||
it 'push documents to user twice' do
|
||||
post_json '/api/v2/management/documents', multisig_jwt_management_api_v2({ data: params }, *signers)
|
||||
|
||||
expect(response.status).to eq 201
|
||||
expect(user.documents.length).to eq(1)
|
||||
|
||||
post_json '/api/v2/management/documents', multisig_jwt_management_api_v2({ data: params }, *signers)
|
||||
expect(response.status).to eq 201
|
||||
expect(user.documents.length).to eq(1)
|
||||
end
|
||||
|
||||
context 'with empty doc_expire' do
|
||||
it 'required doc expire' do
|
||||
allow(Barong::App.config).to receive(:required_docs_expire).and_return(true)
|
||||
expect {
|
||||
post_json '/api/v2/management/documents', multisig_jwt_management_api_v2({ data: params.merge(doc_expire: nil) }, *signers)
|
||||
}.not_to change { Document.count }
|
||||
expect(response.status).to eq 422
|
||||
end
|
||||
|
||||
it 'optional doc expire' do
|
||||
allow(Barong::App.config).to receive(:required_docs_expire).and_return(false)
|
||||
expect {
|
||||
post_json '/api/v2/management/documents', multisig_jwt_management_api_v2({ data: params.merge(doc_expire: nil) }, *signers)
|
||||
}.to change { Document.count }.by 1
|
||||
expect(response.status).to eq 201
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user