authorizations_controller_spec. cluster_policy_spec.
This commit is contained in:
parent
b229637b08
commit
fe135fac68
|
@ -9,10 +9,10 @@ module GoogleApi
|
||||||
session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at] =
|
session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at] =
|
||||||
expires_at.to_s
|
expires_at.to_s
|
||||||
|
|
||||||
if params[:state]
|
if params[:state].present?
|
||||||
redirect_to params[:state]
|
redirect_to params[:state]
|
||||||
else
|
else
|
||||||
redirect_to root_url
|
redirect_to root_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue