From 7f49f31ebf5fd20fd8079677f2c611eca3686ce2 Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Wed, 15 Jul 2020 11:58:34 +0200 Subject: [PATCH] Master sync --- app/controllers/broadcasts_controller.rb | 5 ++++ app/views/broadcasts/show.html.erb | 2 ++ config/locales/en.yml | 5 ++++ config/locales/es.yml | 5 ++++ .../controllers/broadcasts_controller_spec.rb | 13 +++++++++++ .../features/user_managing_broadcasts_spec.rb | 23 +++++++++++++++++++ 6 files changed, 53 insertions(+) diff --git a/app/controllers/broadcasts_controller.rb b/app/controllers/broadcasts_controller.rb index aad9bb1..060fe08 100644 --- a/app/controllers/broadcasts_controller.rb +++ b/app/controllers/broadcasts_controller.rb @@ -33,6 +33,11 @@ class BroadcastsController < ApplicationController end def update + unless params.has_key?(:broadcast) + @broadcast.regenerate_token + redirect_to([@project, @broadcast], notice: t('.reset_notice')) and return + end + @broadcast.update(broadcast_params) @files = @broadcast.files.order("created_at DESC").paginate(page: 1) diff --git a/app/views/broadcasts/show.html.erb b/app/views/broadcasts/show.html.erb index 4d6e507..12e0a93 100644 --- a/app/views/broadcasts/show.html.erb +++ b/app/views/broadcasts/show.html.erb @@ -102,6 +102,7 @@ Copy URL + <%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "btn btn-danger" %> <% else %> @@ -110,6 +111,7 @@ Copy URL + <%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "btn btn-danger" %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 290ef7e..54ae14f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -217,6 +217,9 @@ en: new: heading: Create Live Stream + show: + actions: + reset_url: Reset URL splash: actions: book_demo: Schedule a Demo @@ -235,6 +238,8 @@ en: share_stream: Share live stream link with clients stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera stream_multiple_cameras: Stream multiple cameras at one time + update: + reset_notice: The Share URL has been reset, and the previous URL will no longer work. Please click "Copy URL" and share it again with those who you want to have access to this live stream bulk_taggings: new_bulk_tag_modal: submit: Add diff --git a/config/locales/es.yml b/config/locales/es.yml index 8c6711c..1bae211 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -81,6 +81,9 @@ es: do_not_copy_warning: "Do not copy (ES)" serial_number_label: "Serial Number (ES)" broadcasts: + show: + actions: + reset_url: Reset URL (ES) splash: actions: book_demo: Schedule a Demo @@ -99,6 +102,8 @@ es: share_stream: Share live stream link with clients stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera stream_multiple_cameras: Stream multiple cameras at one time + update: + reset_notice: The Share URL has been reset, and the previous URL will no longer work. Please click "Copy URL" and share it again with those who you want to have access to this live stream contract_templates: blank_contracts: create: diff --git a/spec/controllers/broadcasts_controller_spec.rb b/spec/controllers/broadcasts_controller_spec.rb index 782299d..ed37ad2 100644 --- a/spec/controllers/broadcasts_controller_spec.rb +++ b/spec/controllers/broadcasts_controller_spec.rb @@ -203,6 +203,15 @@ RSpec.describe BroadcastsController, type: :controller do expect(BroadcastsChannel).to have_received(:broadcast_file_upload_updates) end + + it "regenerates token if #update is called without broadcast param" do + old_token = broadcast.token + patch :update, params: { project_id: project.id, id: broadcast.id } + + expect(response).to redirect_to [project, broadcast] + expect(flash.notice).to eq token_reset_notice + expect(Broadcast.last.token).not_to eq old_token + end end describe "#destroy" do @@ -252,4 +261,8 @@ RSpec.describe BroadcastsController, type: :controller do def create_stream t 'broadcasts.splash.actions.create_stream' end + + def token_reset_notice + t 'broadcasts.update.reset_notice' + end end diff --git a/spec/features/user_managing_broadcasts_spec.rb b/spec/features/user_managing_broadcasts_spec.rb index 9be98bc..21eac96 100644 --- a/spec/features/user_managing_broadcasts_spec.rb +++ b/spec/features/user_managing_broadcasts_spec.rb @@ -63,6 +63,21 @@ feature 'User managing broadcasts' do expect(page).to have_content(recording.download_file_name) end + scenario 'Clicking Reset URL regenerates broadcast token' do + broadcast = create(:broadcast, :with_stream, :with_files, project: project) + old_token = broadcast.token + + visit project_broadcast_path(project, broadcast) + + expect(page).to have_content reset_url + expect(page).to have_xpath "//input[@readonly][@value='#{broadcast_url(old_token)}']" + + click_link reset_url + expect(Broadcast.last.token).not_to eq old_token + expect(page).to have_xpath "//input[@readonly][@value='#{broadcast_url(Broadcast.last.token)}']" + expect(page).to have_content token_reset_notice + end + scenario 'user can go back and forth between live session and previous sessions', js: true do broadcast = create(:broadcast, :with_stream, :with_files, project: project) recording = create(:broadcast_recording, broadcast: broadcast) @@ -189,4 +204,12 @@ feature 'User managing broadcasts' do def create_stream t 'broadcasts.splash.actions.create_stream' end + + def reset_url + t 'broadcasts.show.actions.reset_url' + end + + def token_reset_notice + t 'broadcasts.update.reset_notice' + end end