|
236 | 236 | end |
237 | 237 | end |
238 | 238 |
|
| 239 | + context 'non-protectable recording' do |
| 240 | + let(:recording) { create(:recording, room:, protectable: false) } |
| 241 | + |
| 242 | + it 'returns :forbidden when setting visibility to Protected' do |
| 243 | + expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recording_visibility) |
| 244 | + |
| 245 | + expect do |
| 246 | + post :update_visibility, params: { visibility: Recording::VISIBILITIES[:protected], id: recording.record_id } |
| 247 | + end.not_to(change { recording.reload.visibility }) |
| 248 | + |
| 249 | + expect(response).to have_http_status(:forbidden) |
| 250 | + end |
| 251 | + |
| 252 | + it 'returns :forbidden when setting visibility to Public/Protected' do |
| 253 | + expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recording_visibility) |
| 254 | + |
| 255 | + expect do |
| 256 | + post :update_visibility, params: { visibility: Recording::VISIBILITIES[:public_protected], id: recording.record_id } |
| 257 | + end.not_to(change { recording.reload.visibility }) |
| 258 | + |
| 259 | + expect(response).to have_http_status(:forbidden) |
| 260 | + end |
| 261 | + end |
| 262 | + |
| 263 | + context 'protectable recording' do |
| 264 | + let(:recording) { create(:recording, room:, protectable: true) } |
| 265 | + |
| 266 | + it 'allows setting visibility to Protected' do |
| 267 | + expect_any_instance_of(BigBlueButtonApi) |
| 268 | + .to receive(:update_recording_visibility) |
| 269 | + .with(record_id: recording.record_id, visibility: Recording::VISIBILITIES[:protected]) |
| 270 | + |
| 271 | + expect do |
| 272 | + post :update_visibility, params: { visibility: Recording::VISIBILITIES[:protected], id: recording.record_id } |
| 273 | + end.to(change { recording.reload.visibility }) |
| 274 | + |
| 275 | + expect(response).to have_http_status(:ok) |
| 276 | + end |
| 277 | + |
| 278 | + it 'allows setting visibility to Public/Protected' do |
| 279 | + expect_any_instance_of(BigBlueButtonApi) |
| 280 | + .to receive(:update_recording_visibility) |
| 281 | + .with(record_id: recording.record_id, visibility: Recording::VISIBILITIES[:public_protected]) |
| 282 | + |
| 283 | + expect do |
| 284 | + post :update_visibility, params: { visibility: Recording::VISIBILITIES[:public_protected], id: recording.record_id } |
| 285 | + end.to(change { recording.reload.visibility }) |
| 286 | + |
| 287 | + expect(response).to have_http_status(:ok) |
| 288 | + end |
| 289 | + end |
| 290 | + |
239 | 291 | context 'shared access' do |
240 | 292 | let(:signed_in_user) { create(:user) } |
241 | 293 | let(:recording) { create(:recording, room:, visibility: Recording::VISIBILITIES[:published]) } |
|
0 commit comments