encrpted value and working tests
This commit is contained in:
parent
1a36fc6195
commit
2783a69f89
|
@ -2,7 +2,7 @@ module Travis::API::V3
|
||||||
class Models::EnvVar < Travis::Settings::Model
|
class Models::EnvVar < Travis::Settings::Model
|
||||||
attribute :id, Integer
|
attribute :id, Integer
|
||||||
attribute :name, String
|
attribute :name, String
|
||||||
attribute :value, String
|
attribute :value, Travis::Settings::EncryptedValue
|
||||||
attribute :public, Boolean
|
attribute :public, Boolean
|
||||||
attribute :repository_id, Integer
|
attribute :repository_id, Integer
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ module Travis::API::V3
|
||||||
end
|
end
|
||||||
|
|
||||||
validates_each :id, :name do |record, attr, value|
|
validates_each :id, :name do |record, attr, value|
|
||||||
others = record.repository.env_vars.select { |ev| ev.id != record.id }
|
others = record.repository.env_vars.select { |ev| ev.id != record.id }
|
||||||
record.errors.add(:base, :duplicate_resource) if others.find { |ev| ev.send(attr) == record.send(attr) }
|
record.errors.add(:base, :duplicate_resource) if others.find { |ev| ev.send(attr) == record.send(attr) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,7 +10,7 @@ module Travis::API::V3
|
||||||
extend self
|
extend self
|
||||||
|
|
||||||
def clear(**args)
|
def clear(**args)
|
||||||
args.select { |key, value| !value.nil? }
|
args.compact
|
||||||
end
|
end
|
||||||
|
|
||||||
def href(type, string_args = nil, script_name: nil, **args)
|
def href(type, string_args = nil, script_name: nil, **args)
|
||||||
|
@ -49,6 +49,7 @@ module Travis::API::V3
|
||||||
when Model then render_model(value, **options)
|
when Model then render_model(value, **options)
|
||||||
when ActiveRecord::Relation then render_value(value.to_a, **options)
|
when ActiveRecord::Relation then render_value(value.to_a, **options)
|
||||||
when ActiveRecord::Associations::CollectionProxy then render_value(value.to_a, **options)
|
when ActiveRecord::Associations::CollectionProxy then render_value(value.to_a, **options)
|
||||||
|
when Travis::Settings::EncryptedValue then value # Should this be value.decrypt ?? If so do we want to add if options[:included].first.public? so we ensure we only decrypt public values?
|
||||||
else raise ArgumentError, 'cannot render %p (%p)' % [value.class, value]
|
else raise ArgumentError, 'cannot render %p (%p)' % [value.class, value]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -110,6 +110,7 @@ module Travis::API::V3
|
||||||
end
|
end
|
||||||
|
|
||||||
fields.each do |field|
|
fields.each do |field|
|
||||||
|
next if field == :value && !@model.public?
|
||||||
value = Renderer.render_value(send(field),
|
value = Renderer.render_value(send(field),
|
||||||
access_control: access_control,
|
access_control: access_control,
|
||||||
script_name: script_name,
|
script_name: script_name,
|
||||||
|
|
|
@ -28,6 +28,6 @@ describe Travis::API::V3::Services::EnvVar::Delete, set_app: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
example { expect(last_response.status).to eq 200 }
|
example { expect(last_response.status).to eq 200 }
|
||||||
example { pending 'should we return an empty body here?' }
|
example { expect(JSON.parse(last_response.body)["id"]).to eq(env_var[:id]) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,7 +13,7 @@ describe Travis::API::V3::Services::EnvVars::Create, set_app: true do
|
||||||
|
|
||||||
describe 'authenticated, repo missing' do
|
describe 'authenticated, repo missing' do
|
||||||
before { post("/v3/repo/99999999/env_vars", {}, auth_headers) }
|
before { post("/v3/repo/99999999/env_vars", {}, auth_headers) }
|
||||||
include_examples 'missing repo'
|
include_examples 'missing repo'
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'authenticated, existing repo, env var already exists' do
|
describe 'authenticated, existing repo, env var already exists' do
|
||||||
|
@ -58,7 +58,6 @@ describe Travis::API::V3::Services::EnvVars::Create, set_app: true do
|
||||||
'@type' => 'env_var',
|
'@type' => 'env_var',
|
||||||
'@representation' => 'standard',
|
'@representation' => 'standard',
|
||||||
'name' => 'FOO',
|
'name' => 'FOO',
|
||||||
'value' => 'bar',
|
|
||||||
'public' => false
|
'public' => false
|
||||||
)
|
)
|
||||||
expect(response).to include('@href', 'id')
|
expect(response).to include('@href', 'id')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user