Initial commit
This commit is contained in:
58
spec/api/v2/resource/data_storage_spec.rb
Normal file
58
spec/api/v2/resource/data_storage_spec.rb
Normal file
@@ -0,0 +1,58 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
describe 'Api::V2::Resource::DataStorage' do
|
||||
include_context 'bearer authentication'
|
||||
let!(:create_member_permission) do
|
||||
create :permission,
|
||||
role: 'member'
|
||||
end
|
||||
|
||||
describe 'POST /api/v2/resource/data_storage' do
|
||||
let(:url) { '/api/v2/resource/data_storage' }
|
||||
|
||||
context 'successful creation' do
|
||||
let(:valid_params) do
|
||||
{
|
||||
title: 'personal',
|
||||
data: { wife_last_name: Faker::Name.last_name, wife_first_name: Faker::Name.first_name }.to_json
|
||||
}
|
||||
end
|
||||
|
||||
it 'creates data_storage record' do
|
||||
expect { post url, params: valid_params, headers: auth_header }.to change { DataStorage.count }.by(1)
|
||||
expect(response.status).to eq(201)
|
||||
end
|
||||
|
||||
it 'creates a label when recording data_storage' do
|
||||
expect { post url, params: valid_params, headers: auth_header }.to change { Label.count }.by(1)
|
||||
expect(response.status).to eq(201)
|
||||
expect(test_user.labels.find_by(key: valid_params[:title])).not_to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'errors' do
|
||||
let(:non_json_data_params) { { title: 'personal', data: 'My name is John Doe. Hello, World!' } }
|
||||
let(:non_whitelisted_params) { { title: 'family_info', data: { wife_first_name: Faker::Name.first_name }.to_json } }
|
||||
let(:blacklisted_params) { { title: 'document', data: { approved: true }.to_json } }
|
||||
|
||||
it 'doesnt accept non-json data' do
|
||||
expect { post url, params: non_json_data_params, headers: auth_header }.not_to change { DataStorage.count }
|
||||
|
||||
expect(response.status).to eq(422)
|
||||
expect(json_body).to eq({errors: ['data.invalid_format']})
|
||||
end
|
||||
|
||||
it 'doesnt accept non-whitelisted title' do
|
||||
expect { post url, params: non_whitelisted_params, headers: auth_header }.not_to change { DataStorage.count }
|
||||
expect(response.status).to eq(422)
|
||||
expect(json_body).to eq({errors: ['title.inclusion']})
|
||||
end
|
||||
|
||||
it 'doesnt accept blacklisted title' do
|
||||
expect { post url, params: blacklisted_params, headers: auth_header }.not_to change { DataStorage.count }
|
||||
expect(response.status).to eq(422)
|
||||
expect(json_body).to eq({errors: ['title.inclusion', 'title.exclusion']})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user