61 lines
1.3 KiB
Ruby
61 lines
1.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe ApiTokensController do
|
|
|
|
describe '#create' do
|
|
subject { get :create, api_token: 'a-toh-can' }
|
|
|
|
let(:user) { double('user', assign_api_token: nil, username: 'foobar') }
|
|
|
|
before do
|
|
login_as(user)
|
|
end
|
|
|
|
context 'for guest user' do
|
|
let(:user) { nil }
|
|
|
|
before do
|
|
subject
|
|
end
|
|
|
|
it { should redirect_to(new_login_path) }
|
|
|
|
specify { expect(flash[:notice]).to match(/log in to proceed/) }
|
|
end
|
|
|
|
context "when assigning succeeds" do
|
|
before do
|
|
allow(user).to receive(:assign_api_token).with('a-toh-can')
|
|
subject
|
|
end
|
|
|
|
it { should redirect_to(public_profile_path(username: 'foobar')) }
|
|
|
|
specify { expect(flash[:notice]).to_not be_blank }
|
|
end
|
|
|
|
context "when token is invalid" do
|
|
before do
|
|
allow(user).to receive(:assign_api_token).with('a-toh-can').
|
|
and_raise(ActiveRecord::RecordInvalid, ApiToken.new)
|
|
end
|
|
|
|
it 'displays error page' do
|
|
expect(subject).to render_template(:error)
|
|
end
|
|
end
|
|
|
|
context "when token is taken" do
|
|
before do
|
|
allow(user).to receive(:assign_api_token).with('a-toh-can').
|
|
and_raise(ApiToken::ApiTokenTakenError)
|
|
end
|
|
|
|
it 'displays error page' do
|
|
expect(subject).to render_template(:error)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|