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(Flipper).to receive(:enabled?).and_return(true)
  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}&access_token=#{@auth.token}"
          expect(response).to redirect_to(launch_url)
        end
      end
    end
  end
end
