authorizations_controller_spec. cluster_policy_spec.

This commit is contained in:
Shinya Maeda 2017-10-05 21:29:22 +09:00
parent b229637b08
commit fe135fac68
3 changed files with 73 additions and 2 deletions

View file

@ -9,10 +9,10 @@ module GoogleApi
session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at] =
expires_at.to_s
if params[:state]
if params[:state].present?
redirect_to params[:state]
else
redirect_to root_url
redirect_to root_path
end
end
end

View file

@ -0,0 +1,43 @@
require 'spec_helper'
describe GoogleApi::AuthorizationsController do
describe 'GET|POST #callback' do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:state) { namespace_project_clusters_url(project.namespace, project).to_s }
let(:token) { 'token' }
let(:expires_at) { 1.hour.since.strftime('%s') }
subject { get :callback, code: 'xxx', state: state }
before do
sign_in(user)
allow_any_instance_of(GoogleApi::CloudPlatform::Client)
.to receive(:get_token).and_return([token, expires_at])
end
it 'sets token and expires_atin session' do
subject
expect(session[GoogleApi::CloudPlatform::Client.session_key_for_token])
.to eq(token)
expect(session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at])
.to eq(expires_at)
end
context 'when redirection url is stored in state' do
it 'redirects to the URL stored in state param' do
expect(subject).to redirect_to(state)
end
end
context 'when redirection url is not stored in state' do
let(:state) { '' }
it 'redirects to root_path' do
expect(subject).to redirect_to(root_path)
end
end
end
end

View file

@ -0,0 +1,28 @@
require 'spec_helper'
describe Gcp::ClusterPolicy, :models do
set(:project) { create(:project) }
set(:cluster) { create(:gcp_cluster, project: project) }
let(:user) { create(:user) }
let(:policy) { described_class.new(user, cluster) }
describe 'rules' do
context 'when developer' do
before do
project.add_developer(user)
end
it { expect(policy).to be_disallowed :update_cluster }
it { expect(policy).to be_disallowed :admin_cluster }
end
context 'when master' do
before do
project.add_master(user)
end
it { expect(policy).to be_allowed :update_cluster }
it { expect(policy).to be_allowed :admin_cluster }
end
end
end