Claiming asciicasts

openid
Marcin Kulik 13 years ago
parent 0de5784e68
commit 9e59b19c16

@ -0,0 +1,21 @@
class UserTokensController < ApplicationController
# before_filter :ensure_authenticated!
def create
ut = current_user.add_user_token(params[:user_token])
if ut.valid?
claimed_num = Asciicast.assign_user(ut.token, current_user)
if claimed_num > 0
notice = "Claimed #{claimed_num} asciicasts, yay!"
else
notice = "Authenticated successfully, yippie!"
end
redirect_to root_path, :notice => notice
else
render :error
end
end
end

@ -0,0 +1,3 @@
<h2>Oops.</h2>
<p>Seems like the token is incorrect. Please make sure you've pasted it correctly.</p>

@ -12,5 +12,7 @@ AsciiIo::Application.routes.draw do
match "/login" => "sessions#new"
match "/logout" => "sessions#destroy"
match "/connect/:user_token" => "user_tokens#create"
root :to => 'asciicasts#index'
end

@ -0,0 +1,49 @@
require 'spec_helper'
describe UserTokensController do
describe '#create' do
let(:user) { Factory(:user) }
let(:user_token) { Factory.build(:user_token, :user => nil) }
before do
@controller.stub!(:current_user => user)
user.stub!(:add_user_token => user_token)
end
context 'when given token is valid' do
before do
user_token.stub!(:valid? => true)
end
it 'calls Asciicast.assign_user' do
Asciicast.should_receive(:assign_user).with(user_token.token, user).and_return(1)
post :create, :user_token => user_token.token
end
it 'redirects to root_path' do
post :create, :user_token => user_token.token
response.should redirect_to(root_path)
end
end
context 'when given token is invalid' do
before do
user_token.stub!(:valid? => false)
end
it 'calls Asciicast.assign_user' do
Asciicast.should_not_receive(:assign_user)
post :create, :user_token => user_token.token
end
it 'renders :error' do
post :create, :user_token => user_token.token
response.should render_template(:error)
end
end
end
end

@ -3,6 +3,6 @@
FactoryGirl.define do
factory :user_token do
association :user
token "some-token"
sequence(:token) { |n| "2b4b4e02-6613-11e1-9be5-#{Kernel.format('%012i', n)}" }
end
end

@ -1,5 +1,7 @@
require 'spec_helper'
describe UserToken do
pending "add some examples to (or delete) #{__FILE__}"
it "has valid factory" do
Factory.build(:user_token).should be_valid
end
end

@ -0,0 +1,11 @@
require 'spec_helper'
describe 'connect routing' do
it 'routes /connect/:user_token to user_tokens#create for user_token' do
{ :get => '/connect/jolka-misio' }.should route_to(
:controller => 'user_tokens',
:action => 'create',
:user_token => 'jolka-misio'
)
end
end
Loading…
Cancel
Save