Skip to content

Commit 794f548

Browse files
ShahzaibAwanvitalie
ShahzaibAwan
authored and
vitalie
committed
[BSFY-181] Add env vars changes to changelog for admin
1 parent af85d25 commit 794f548

File tree

5 files changed

+54
-20
lines changed

5 files changed

+54
-20
lines changed

lib/travis/api/app/endpoint/setting_endpoint.rb

+29-9
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ class SettingsEndpoint < Endpoint
55
include ActiveSupport::Callbacks
66

77
define_callbacks :after_save
8-
98
set_callback :after_save, :after, :save_audit
9+
1010
set(:prefix) { "/settings/" << name[/[^:]+$/].underscore }
1111

1212
class << self
@@ -24,7 +24,7 @@ def subclass(name)
2424
end
2525

2626
def create_settings_class(name)
27-
klass = Class.new(self) do
27+
Class.new(self) do
2828
define_method(:name) { name }
2929
before { authenticate_by_mode! }
3030
define_routes!
@@ -43,7 +43,6 @@ def define_routes!
4343
# Rails style methods for easy overriding
4444
def index
4545
respond_with(collection, type: name, version: :v2)
46-
4746
end
4847

4948
def show
@@ -54,8 +53,13 @@ def update
5453
disallow_migrating!(repo)
5554

5655
record.update(JSON.parse(request.body.read)[singular_name])
56+
5757
if record.valid?
58-
@changes = { :"env_vars" => { created: "name: #{record.name}, is_public: #{record.public}, branch: #{record.branch || 'all'} " } } if is_env_var?
58+
@changes = {
59+
env_vars: {
60+
created: "name: #{record.name}, is_public: #{record.public}, branch: #{record.branch || 'all'} "
61+
}
62+
} if is_env_var?
5963

6064
repo_settings.save
6165
run_callbacks :after_save if is_env_var?
@@ -71,8 +75,13 @@ def create
7175
disallow_migrating!(repo)
7276

7377
record = collection.create(JSON.parse(request.body.read)[singular_name])
78+
7479
if record.valid?
75-
@changes = { :"env_vars" => { created: "name: #{record.name}, is_public: #{record.public}, branch: #{record.branch || 'all'}" } } if is_env_var?
80+
@changes = {
81+
env_vars: {
82+
created: "name: #{record.name}, is_public: #{record.public}, branch: #{record.branch || 'all'}"
83+
}
84+
} if is_env_var?
7685

7786
repo_settings.save
7887
run_callbacks :after_save if is_env_var?
@@ -88,7 +97,11 @@ def destroy
8897
disallow_migrating!(repo)
8998

9099
record = collection.destroy(params[:id]) || record_not_found
91-
@changes = { :"env_vars" => { destroyed: "name: #{record.name}, is_public: #{record.public}, branch: #{record.branch || 'all'} " } } if is_env_var?
100+
@changes = {
101+
env_vars: {
102+
destroyed: "name: #{record.name}, is_public: #{record.public}, branch: #{record.branch || 'all'} "
103+
}
104+
} if is_env_var?
92105

93106
repo_settings.save
94107
run_callbacks :after_save if is_env_var?
@@ -112,8 +125,8 @@ def repo
112125
# Sinatra's method
113126
def repo_settings
114127
@settings ||= begin
115-
service(:find_repo_settings, id: params['repository_id'].to_i).run
116-
end || halt(404, error: "Couldn't find repository")
128+
service(:find_repo_settings, id: params['repository_id'].to_i).run
129+
end || halt(404, error: "Couldn't find repository")
117130
end
118131

119132
def record
@@ -136,7 +149,14 @@ def is_env_var?
136149

137150
def save_audit
138151
change_source = access_token.app_id == 2 ? 'admin-v2' : 'travis-api'
139-
Travis::API::V3::Models::Audit.create!(owner: current_user, change_source: change_source, source: @repo, source_changes: { settings: self.changes })
152+
Travis::API::V3::Models::Audit.create!(
153+
owner: current_user,
154+
change_source: change_source,
155+
source: @repo,
156+
source_changes: {
157+
settings: self.changes
158+
}
159+
)
140160
@changes = {}
141161
end
142162
end

lib/travis/api/v3/models/env_vars.rb

+16-6
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@
22

33
module Travis::API::V3
44
class Models::EnvVars < Travis::Settings::Collection
5-
include Models::JsonSync, ActiveSupport::Callbacks
5+
include Models::JsonSync
6+
include ActiveSupport::Callbacks
67
extend ActiveSupport::Concern
8+
79
model Models::EnvVar
8-
define_callbacks :after_save
910

11+
define_callbacks :after_save
1012
set_callback :after_save, :after, :save_audit
1113

1214
attr_accessor :user, :change_source
15+
1316
# See Models::JsonSync
1417
def to_h
1518
{ 'env_vars' => map(&:to_h).map(&:stringify_keys) }
1619
end
1720

1821
def create(attributes)
19-
@changes = { :"env_vars" => { created: "#{attributes.except("value")}" } }
22+
@changes = { env_vars: { created: "#{attributes.except("value")}" } }
2023
env_var = super(attributes).tap { sync! }
2124
run_callbacks :after_save
2225
env_var
@@ -29,7 +32,7 @@ def add(env_var)
2932

3033
def destroy(id)
3134
env_var = find(id)
32-
@changes = { :"env_vars" => { deleted: "#{env_var.attributes.delete("value")}" } }
35+
@changes = { env_vars: { deleted: "#{env_var.attributes.delete("value")}" } }
3336
deleted_env_var = super(id).tap { sync! }
3437
run_callbacks :after_save
3538
deleted_env_var
@@ -38,7 +41,7 @@ def destroy(id)
3841
def repository
3942
@repository ||= Models::Repository.find(additional_attributes[:repository_id])
4043
end
41-
44+
4245
def changes
4346
@changes
4447
end
@@ -47,7 +50,14 @@ def changes
4750

4851
def save_audit
4952
if self.change_source
50-
Travis::API::V3::Models::Audit.create!(owner: self.user, change_source: self.change_source, source: self.repository, source_changes: { settings: self.changes })
53+
Travis::API::V3::Models::Audit.create!(
54+
owner: self.user,
55+
change_source: self.change_source,
56+
source: self.repository,
57+
source_changes: {
58+
settings: self.changes
59+
}
60+
)
5161
@changes = {}
5262
end
5363
end

lib/travis/api/v3/queries/env_var.rb

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ def find(repository)
66
repository.env_vars.find(id)
77
end
88

9-
def update(env_var, from_admin)
9+
def update(env_var, from_admin = false)
1010
env_vars = env_var.repository.env_vars
1111
env_vars.user = env_var.repository.user_settings.user
1212
env_vars.change_source = 'travis-api' unless from_admin
1313
env_var.update(env_var_params)
14-
env_vars.add(env_var)
14+
env_vars.add(env_var)
15+
1516
env_var
1617
end
1718

18-
def delete(repository, from_admin)
19+
def delete(repository, from_admin = false)
1920
env_vars = repository.env_vars
2021
env_vars.user = repository.user_settings.user
2122
env_vars.change_source = 'travis-api' unless from_admin

lib/travis/api/v3/queries/env_vars.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@ def find(repository)
66
repository.env_vars
77
end
88

9-
def create(repository, from_admin)
9+
def create(repository, from_admin = false)
1010
env_vars = repository.env_vars
1111
env_vars.user = repository.user_settings.user
1212
env_vars.change_source = 'travis-api' unless from_admin
1313
env_var = env_vars.create(env_var_params)
14+
1415
unless env_var.valid?
1516
repository.env_vars.destroy(env_var.id)
1617
handle_errors(env_var)
1718
end
19+
1820
repository.save!
21+
1922
env_var
2023
end
2124

lib/travis/api/v3/queries/user_setting.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def find(repository)
66
repository.user_settings.read(_name)
77
end
88

9-
def update(repository, user, from_admin)
9+
def update(repository, user, from_admin = false)
1010
user_settings = repository.user_settings
1111
user_settings.user = user
1212
user_settings.change_source = 'travis-api' unless from_admin

0 commit comments

Comments
 (0)