Commit a2858d4d authored by Darby Frey's avatar Darby Frey

Adding permissions values to upload endpoint and test case

parent 3485d4d1
...@@ -57,7 +57,7 @@ module API ...@@ -57,7 +57,7 @@ module API
params do params do
requires :name, type: String, desc: 'The name of the file' requires :name, type: String, desc: 'The name of the file'
requires :file, types: [Rack::Multipart::UploadedFile, ::API::Validations::Types::WorkhorseFile], desc: 'The secure file to be uploaded' requires :file, types: [Rack::Multipart::UploadedFile, ::API::Validations::Types::WorkhorseFile], desc: 'The secure file to be uploaded'
optional :permissions, type: String, desc: 'The file permissions' optional :permissions, type: String, desc: 'The file permissions', default: 'read_only', values: %w[read_only read_write execute]
end end
route_setting :authentication, basic_auth_personal_access_token: true, job_token_allowed: true route_setting :authentication, basic_auth_personal_access_token: true, job_token_allowed: true
......
...@@ -117,7 +117,8 @@ RSpec.describe API::Ci::SecureFiles do ...@@ -117,7 +117,8 @@ RSpec.describe API::Ci::SecureFiles do
it 'uploads and downloads a secure file' do it 'uploads and downloads a secure file' do
post_params = { post_params = {
file: fixture_file_upload('spec/fixtures/ci_secure_files/upload-keystore.jks'), file: fixture_file_upload('spec/fixtures/ci_secure_files/upload-keystore.jks'),
name: 'upload-keystore.jks' name: 'upload-keystore.jks',
permissions: 'read_write'
} }
post api("/projects/#{project.id}/secure_files", user), params: post_params post api("/projects/#{project.id}/secure_files", user), params: post_params
...@@ -159,7 +160,20 @@ RSpec.describe API::Ci::SecureFiles do ...@@ -159,7 +160,20 @@ RSpec.describe API::Ci::SecureFiles do
expect(json_response['error']).to eq('name is missing') expect(json_response['error']).to eq('name is missing')
end end
it 'retuns an error when an unexpected validation failure happens' do it 'returns an error when an unexpected permission is supplied' do
post_params = {
file: fixture_file_upload('spec/fixtures/ci_secure_files/upload-keystore.jks'),
name: 'upload-keystore.jks',
permissions: 'foo'
}
post api("/projects/#{project.id}/secure_files", user), params: post_params
expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('permissions does not have a valid value')
end
it 'returns an error when an unexpected validation failure happens' do
allow_next_instance_of(Ci::SecureFile) do |instance| allow_next_instance_of(Ci::SecureFile) do |instance|
allow(instance).to receive(:valid?).and_return(false) allow(instance).to receive(:valid?).and_return(false)
allow(instance).to receive_message_chain(:errors, :any?).and_return(true) allow(instance).to receive_message_chain(:errors, :any?).and_return(true)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment