asciinema.org/spec/controllers/api_tokens_controller_spec.rb
2014-10-17 20:24:22 +02:00

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