Skip to content

Commit 45d92e3

Browse files
authored
Merge branch 'master' into dependabot/bundler/rack-3.2.6
2 parents f4b171f + 80ff572 commit 45d92e3

5 files changed

Lines changed: 57 additions & 10 deletions

File tree

Gemfile.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ GEM
7474
minitest (>= 5.1)
7575
securerandom (>= 0.3)
7676
tzinfo (~> 2.0, >= 2.0.5)
77-
addressable (2.8.7)
78-
public_suffix (>= 2.0.2, < 7.0)
77+
addressable (2.9.0)
78+
public_suffix (>= 2.0.2, < 8.0)
7979
ast (2.4.2)
8080
aws-eventstream (1.4.0)
8181
aws-partitions (1.1196.0)
@@ -120,7 +120,7 @@ GEM
120120
dotenv (= 3.1.7)
121121
railties (>= 6.1)
122122
drb (2.2.3)
123-
erb (6.0.2)
123+
erb (6.0.4)
124124
erubi (1.13.1)
125125
factory_bot (6.5.1)
126126
activesupport (>= 6.1.0)
@@ -172,7 +172,7 @@ GEM
172172
minitest (5.25.5)
173173
minitest-stub_any_instance (1.0.3)
174174
msgpack (1.8.0)
175-
net-imap (0.6.3)
175+
net-imap (0.6.4)
176176
date
177177
net-protocol
178178
net-pop (0.1.2)
@@ -210,12 +210,12 @@ GEM
210210
psych (5.3.1)
211211
date
212212
stringio
213-
public_suffix (6.0.1)
213+
public_suffix (7.0.5)
214214
puma (6.6.0)
215215
nio4r (~> 2.0)
216216
racc (1.8.1)
217217
rack (3.2.6)
218-
rack-session (2.1.1)
218+
rack-session (2.1.2)
219219
base64 (>= 0.1.0)
220220
rack (>= 3.0.0)
221221
rack-test (2.2.0)
@@ -340,7 +340,7 @@ GEM
340340
tty-screen (= 0.8.1)
341341
unicode-display_width (~> 2.2)
342342
thor (1.5.0)
343-
timeout (0.6.0)
343+
timeout (0.6.1)
344344
tsort (0.2.0)
345345
tty-screen (0.8.1)
346346
tzinfo (2.0.6)

app/services/recording_ready_notifier_service.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@ def execute(recording_id)
2323

2424
def encoded_payload(meeting_id, record_id, secret)
2525
payload = { meeting_id: meeting_id, record_id: record_id }
26-
JWT.encode(payload, secret)
26+
JWT.encode(payload, secret, jwt_algorithm)
27+
end
28+
29+
def jwt_algorithm
30+
algos = Rails.configuration.x.loadbalancer_checksum_algorithms
31+
32+
return 'HS256' if algos.include?('SHA256')
33+
return 'HS512' if algos.include?('SHA512')
34+
35+
'HS256'
2736
end
2837

2938
def notify(callback_url, meeting_id, record_id, tenant_name)

lib/tasks/servers.rake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ namespace :servers do
6666
end
6767
end
6868
server.load_multiplier = tmp_load_multiplier
69-
server.tag = args.tag.presence unless args.tag.nil?
69+
# inspect the raw positional arguments to distinguish an omitted tag from an explicit untag
70+
tag_arg = args.to_a[3]
71+
server.tag = tag_arg.presence unless tag_arg.nil?
7072
server.save!
7173
puts('OK')
7274
rescue ApplicationRedisRecord::RecordNotFound

spec/services/recording_ready_notifier_service_spec.rb

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,23 @@
6969
stub_request(:post, url)
7070
.to_return(status: 200, body: '', headers: {})
7171

72-
expect(JWT).to receive(:encode).with({ meeting_id: recording.meeting_id, record_id: recording.record_id }, tenant.secrets_array[0])
72+
expect(JWT).to receive(:encode).with({ meeting_id: recording.meeting_id, record_id: recording.record_id }, tenant.secrets_array[0], anything)
7373

7474
described_class.execute(recording.id)
7575
end
7676
end
77+
78+
describe '.jwt_algorithm' do
79+
it 'returns HS256 with the default checksum algorithms configuration' do
80+
allow(Rails.configuration.x).to receive(:loadbalancer_checksum_algorithms).and_return(%w[SHA1 SHA256 SHA512])
81+
82+
expect(described_class.jwt_algorithm).to eq('HS256')
83+
end
84+
85+
it 'returns HS512 when only SHA512 is configured' do
86+
allow(Rails.configuration.x).to receive(:loadbalancer_checksum_algorithms).and_return(%w[SHA512])
87+
88+
expect(described_class.jwt_algorithm).to eq('HS512')
89+
end
90+
end
7791
end

spec/tasks/servers/servers_tasks_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,26 @@
5151
expect { task.invoke(verbose) }.to output(%r{url: https://example.com}).to_stdout
5252
end
5353
end
54+
55+
describe 'servers:update task' do
56+
let(:task) { Rake::Task['servers:update'] }
57+
58+
it 'updates the tag when the fourth argument is non-empty' do
59+
server = create(:server, tag: nil, load_multiplier: 1.0)
60+
task.invoke(server.id, server.secret, '1.0', 'test-tag')
61+
expect(Server.find(server.id).tag).to eq('test-tag')
62+
end
63+
64+
it 'clears the tag when the fourth argument is an empty string' do
65+
server = create(:server, tag: 'test-tag', load_multiplier: 1.0)
66+
task.invoke(server.id, server.secret, '1.0', '')
67+
expect(Server.find(server.id).tag).to be_nil
68+
end
69+
70+
it 'keeps the existing tag when the fourth argument is omitted' do
71+
server = create(:server, tag: 'test-tag', load_multiplier: 1.0)
72+
task.invoke(server.id, server.secret, '1.0')
73+
expect(Server.find(server.id).tag).to eq('test-tag')
74+
end
75+
end
5476
end

0 commit comments

Comments
 (0)