require 'rails_helper' RSpec.describe Services::RsAuthsController, type: :controller do let(:user) { create :user } before do allow_any_instance_of(AppCatalog::WebApp).to receive(:update_metadata).and_return(true) allow_any_instance_of(RemoteStorageAuthorization).to receive(:remove_token_expiry_job).and_return(nil) allow_any_instance_of(LdapService).to receive(:fetch_users).and_return([ { services_enabled: ["remotestorage"] } ]) end describe "GET /services/storage/rs_auths/:id/launch_app" do context "when user is signed in" do before do sign_in user end context "token exists" do before do @auth = user.remote_storage_authorizations.create!( permissions: %w(documents), client_id: "app.example.com", redirect_uri: "https://app.example.com", expire_at: 2.days.from_now ) get :launch_app, params: { id: @auth.id } end after do @auth.destroy end it "redirects to the given URL with the correct RS URL fragment params" do launch_url = "https://app.example.com#remotestorage=#{user.address}" expect(response).to redirect_to(launch_url) end end context "when remoteStorage is not enabled for the user" do before do allow_any_instance_of(LdapService).to receive(:fetch_users).and_return([ { services_enabled: [] } ]) get :launch_app, params: { id: 1 } end it "responds with forbidden" do expect(response).to have_http_status(:forbidden) end end end end end