Rename the word field in the User model to token throughout the application and in the database. It fits better semantically with the way the field is used.

Note: this changeset requires a "rake db:migrate"



git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@568 a4c988fc-2ded-0310-b66e-134b36920a42
This commit is contained in:
lukemelia 2007-07-17 03:50:13 +00:00
parent 5d051181f2
commit 08e5d6069d
16 changed files with 285 additions and 205 deletions

View file

@ -6,14 +6,14 @@ class BackendController < ApplicationController
def new_todo(username, token, context_id, description)
check_token_against_user_word(username, token)
check_token(username, token)
check_context_belongs_to_user(context_id)
item = create_todo(description, context_id)
item.id
end
def new_rich_todo(username, token, default_context_id, description)
check_token_against_user_word(username,token)
check_token(username,token)
description,context = split_by_char('@',description)
description,project = split_by_char('>',description)
if(!context.nil? && project.nil?)
@ -44,23 +44,23 @@ class BackendController < ApplicationController
end
def list_contexts(username, token)
check_token_against_user_word(username, token)
check_token(username, token)
@user.contexts
end
def list_projects(username, token)
check_token_against_user_word(username, token)
check_token(username, token)
@user.projects
end
private
# Check whether the token in the URL matches the word in the User's table
def check_token_against_user_word(username, token)
# Check whether the token in the URL matches the token in the User's table
def check_token(username, token)
@user = User.find_by_login( username )
unless (token == @user.word)
unless (token == @user.token)
raise(InvalidToken, "Sorry, you don't have permission to perform this action.")
end
end

View file

@ -220,7 +220,7 @@ class UsersController < ApplicationController
def refresh_token
@user.crypt_word
@user.crypt_token
@user.save
notify :notice, "New token successfully generated"
redirect_to :controller => 'preferences', :action => 'index'

View file

@ -2,19 +2,19 @@ module FeedlistHelper
def rss_formatted_link(options = {})
image_tag = image_tag("feed-icon.png", :size => "16X16", :border => 0, :class => "rss-icon")
linkoptions = { :token => @user.word, :format => 'rss' }
linkoptions = { :token => @user.token, :format => 'rss' }
linkoptions.merge!(options)
link_to(image_tag, linkoptions, :title => "RSS feed")
end
def text_formatted_link(options = {})
linkoptions = { :token => @user.word, :format => 'txt' }
linkoptions = { :token => @user.token, :format => 'txt' }
linkoptions.merge!(options)
link_to('<span class="feed">TXT</span>', linkoptions, :title => "Plain text feed" )
end
def ical_formatted_link(options = {})
linkoptions = { :token => @user.word, :format => 'ics' }
linkoptions = { :token => @user.token, :format => 'ics' }
linkoptions.merge!(options)
link_to('<span class="feed">iCal</span>', linkoptions, :title => "iCal feed" )
end

View file

@ -92,7 +92,7 @@ class User < ActiveRecord::Base
validates_uniqueness_of :login, :on => :create
validates_presence_of :open_id_url, :if => Proc.new{|user| user.auth_type == 'open_id'}
before_create :crypt_password, :crypt_word
before_create :crypt_password, :crypt_token
before_update :crypt_password
def validate
@ -174,8 +174,8 @@ protected
Digest::SHA1.hexdigest("#{Tracks::Config.salt}--#{pass}--")
end
def crypt_word
write_attribute("word", self.class.sha1(login + Time.now.to_i.to_s + rand.to_s))
def crypt_token
write_attribute("token", self.class.sha1(login + Time.now.to_i.to_s + rand.to_s))
end
def crypt_password

View file

@ -17,7 +17,7 @@
<%= javascript_include_tag "protoload" %>
<link rel="shortcut icon" href="<%= url_for(:controller => 'favicon.ico') %>" />
<%= auto_discovery_link_tag(:rss,{:controller => "feed", :action => "na_feed", :name => "#{@user.login}", :token => "#{@user.word}"}, {:title => "RSS feed of next actions"}) %>
<%= auto_discovery_link_tag(:rss,{:controller => "feed", :action => "na_feed", :name => "#{@user.login}", :token => "#{@user.token}"}, {:title => "RSS feed of next actions"}) %>
<script type="text/javascript">
window.onload=function(){

View file

@ -36,7 +36,7 @@
<h2>Your token</h2>
<div id="token_area">
<div class="description">Token (for feeds and API use):</div>
<div id="token><span class="highlight"><%= @user.word %></span></div>
<div id="token><span class="highlight"><%= @user.token %></span></div>
<div class="token_regenerate">
<%= button_to "Generate a new token", refresh_token_user_path(@user),
:confirm => "Are you sure? Generating a new token will replace the existing one and break any external usages of this token." %>

View file

@ -0,0 +1,9 @@
class RenameWordToToken < ActiveRecord::Migration
def self.up
rename_column :users, :word, :token
end
def self.down
rename_column :users, :token, :word
end
end

View file

@ -1,140 +1,211 @@
# This file is autogenerated. Instead of editing this file, please use the
# migrations feature of ActiveRecord to incrementally modify your database, and
# then regenerate this schema definition.
ActiveRecord::Schema.define(:version => 33) do
create_table "contexts", :force => true do |t|
t.column "name", :string, :default => "", :null => false
t.column "position", :integer, :null => false
t.column "hide", :boolean, :default => false
t.column "user_id", :integer, :default => 1
t.column "created_at", :datetime
t.column "updated_at", :datetime
end
add_index "contexts", ["user_id"], :name => "index_contexts_on_user_id"
add_index "contexts", ["user_id", "name"], :name => "index_contexts_on_user_id_and_name"
create_table "notes", :force => true do |t|
t.column "user_id", :integer, :null => false
t.column "project_id", :integer, :null => false
t.column "body", :text
t.column "created_at", :datetime
t.column "updated_at", :datetime
end
create_table "open_id_associations", :force => true do |t|
t.column "server_url", :binary
t.column "handle", :string
t.column "secret", :binary
t.column "issued", :integer
t.column "lifetime", :integer
t.column "assoc_type", :string
end
create_table "open_id_nonces", :force => true do |t|
t.column "nonce", :string
t.column "created", :integer
end
create_table "open_id_settings", :force => true do |t|
t.column "setting", :string
t.column "value", :binary
end
create_table "preferences", :force => true do |t|
t.column "user_id", :integer, :null => false
t.column "date_format", :string, :limit => 40, :default => "%d/%m/%Y", :null => false
t.column "week_starts", :integer, :default => 0, :null => false
t.column "show_number_completed", :integer, :default => 5, :null => false
t.column "staleness_starts", :integer, :default => 7, :null => false
t.column "show_completed_projects_in_sidebar", :boolean, :default => true, :null => false
t.column "show_hidden_contexts_in_sidebar", :boolean, :default => true, :null => false
t.column "due_style", :integer, :default => 0, :null => false
t.column "admin_email", :string, :default => "butshesagirl@rousette.org.uk", :null => false
t.column "refresh", :integer, :default => 0, :null => false
t.column "verbose_action_descriptors", :boolean, :default => false, :null => false
t.column "show_hidden_projects_in_sidebar", :boolean, :default => true, :null => false
t.column "time_zone", :string, :default => "London", :null => false
t.column "show_project_on_todo_done", :boolean, :default => false, :null => false
t.column "title_date_format", :string, :default => "%A, %d %B %Y", :null => false
t.column "mobile_todos_per_page", :integer, :default => 6, :null => false
end
add_index "preferences", ["user_id"], :name => "index_preferences_on_user_id"
create_table "projects", :force => true do |t|
t.column "name", :string, :default => "", :null => false
t.column "position", :integer, :null => false
t.column "user_id", :integer, :default => 1
t.column "description", :text
t.column "state", :string, :limit => 20, :default => "active", :null => false
t.column "created_at", :datetime
t.column "updated_at", :datetime
t.column "default_context_id", :integer
end
add_index "projects", ["user_id"], :name => "index_projects_on_user_id"
add_index "projects", ["user_id", "name"], :name => "index_projects_on_user_id_and_name"
create_table "sessions", :force => true do |t|
t.column "session_id", :string
t.column "data", :text
t.column "updated_at", :datetime
end
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
create_table "taggings", :force => true do |t|
t.column "taggable_id", :integer
t.column "tag_id", :integer
t.column "taggable_type", :string
t.column "user_id", :integer
end
add_index "taggings", ["tag_id", "taggable_id", "taggable_type"], :name => "index_taggings_on_tag_id_and_taggable_id_and_taggable_type"
create_table "tags", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime
t.column "updated_at", :datetime
end
add_index "tags", ["name"], :name => "index_tags_on_name"
create_table "todos", :force => true do |t|
t.column "context_id", :integer, :null => false
t.column "project_id", :integer
t.column "description", :string, :default => "", :null => false
t.column "notes", :text
t.column "created_at", :datetime
t.column "due", :date
t.column "completed_at", :datetime
t.column "user_id", :integer, :default => 1
t.column "show_from", :date
t.column "state", :string, :limit => 20, :default => "immediate", :null => false
end
add_index "todos", ["user_id", "state"], :name => "index_todos_on_user_id_and_state"
add_index "todos", ["user_id", "project_id"], :name => "index_todos_on_user_id_and_project_id"
add_index "todos", ["project_id"], :name => "index_todos_on_project_id"
add_index "todos", ["context_id"], :name => "index_todos_on_context_id"
add_index "todos", ["user_id", "context_id"], :name => "index_todos_on_user_id_and_context_id"
create_table "users", :force => true do |t|
t.column "login", :string, :limit => 80, :default => "", :null => false
t.column "crypted_password", :string, :limit => 40
t.column "word", :string
t.column "is_admin", :boolean, :default => false, :null => false
t.column "first_name", :string
t.column "last_name", :string
t.column "auth_type", :string, :default => "database", :null => false
t.column "open_id_url", :string
t.column "remember_token", :string
t.column "remember_token_expires_at", :datetime
end
add_index "users", ["login"], :name => "index_users_on_login"
end
# This file is autogenerated. Instead of editing this file, please use the
# migrations feature of ActiveRecord to incrementally modify your database, and
# then regenerate this schema definition.
ActiveRecord::Schema.define(:version => 34) do
create_table "bow_wows", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "cats", :force => true do |t|
t.column "name", :string
t.column "cat_type", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "contexts", :force => true do |t|
t.column "name", :string, :default => "", :null => false
t.column "hide", :integer, :limit => 4, :default => 0, :null => false
t.column "position", :integer, :default => 0, :null => false
t.column "user_id", :integer, :default => 0, :null => false
t.column "created_at", :datetime
t.column "updated_at", :datetime
end
add_index "contexts", ["user_id"], :name => "index_contexts_on_user_id"
add_index "contexts", ["user_id", "name"], :name => "index_contexts_on_user_id_and_name"
create_table "eaters_foodstuffs", :force => true do |t|
t.column "foodstuff_id", :integer
t.column "eater_id", :integer
t.column "some_attribute", :integer, :default => 0
t.column "eater_type", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "fish", :force => true do |t|
t.column "name", :string
t.column "speed", :integer
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "frogs", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "keep_your_enemies_close", :force => true do |t|
t.column "enemy_id", :integer
t.column "enemy_type", :string
t.column "protector_id", :integer
t.column "protector_type", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "little_whale_pupils", :force => true do |t|
t.column "whale_id", :integer
t.column "aquatic_pupil_id", :integer
t.column "aquatic_pupil_type", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "notes", :force => true do |t|
t.column "user_id", :integer, :default => 0, :null => false
t.column "project_id", :integer, :default => 0, :null => false
t.column "body", :text
t.column "created_at", :datetime
t.column "updated_at", :datetime
end
create_table "open_id_associations", :force => true do |t|
t.column "server_url", :binary
t.column "handle", :string
t.column "secret", :binary
t.column "issued", :integer
t.column "lifetime", :integer
t.column "assoc_type", :string
end
create_table "open_id_nonces", :force => true do |t|
t.column "nonce", :string
t.column "created", :integer
end
create_table "open_id_settings", :force => true do |t|
t.column "setting", :string
t.column "value", :binary
end
create_table "petfoods", :id => false, :force => true do |t|
t.column "the_petfood_primary_key", :integer, :null => false
t.column "name", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "preferences", :force => true do |t|
t.column "user_id", :integer, :default => 0, :null => false
t.column "date_format", :string, :limit => 40, :default => "%d/%m/%Y", :null => false
t.column "week_starts", :integer, :default => 0, :null => false
t.column "show_number_completed", :integer, :default => 5, :null => false
t.column "staleness_starts", :integer, :default => 7, :null => false
t.column "show_completed_projects_in_sidebar", :boolean, :default => true, :null => false
t.column "show_hidden_contexts_in_sidebar", :boolean, :default => true, :null => false
t.column "due_style", :integer, :default => 0, :null => false
t.column "admin_email", :string, :default => "butshesagirl@rousette.org.uk", :null => false
t.column "refresh", :integer, :default => 0, :null => false
t.column "verbose_action_descriptors", :boolean, :default => false, :null => false
t.column "show_hidden_projects_in_sidebar", :boolean, :default => true, :null => false
t.column "time_zone", :string, :default => "London", :null => false
t.column "show_project_on_todo_done", :boolean, :default => false, :null => false
t.column "title_date_format", :string, :default => "%A, %d %B %Y", :null => false
t.column "mobile_todos_per_page", :integer, :default => 6, :null => false
end
add_index "preferences", ["user_id"], :name => "index_preferences_on_user_id"
create_table "projects", :force => true do |t|
t.column "name", :string, :default => "", :null => false
t.column "position", :integer, :default => 0, :null => false
t.column "user_id", :integer, :default => 0, :null => false
t.column "description", :text
t.column "state", :string, :limit => 20, :default => "active", :null => false
t.column "created_at", :datetime
t.column "updated_at", :datetime
t.column "default_context_id", :integer
end
add_index "projects", ["user_id"], :name => "index_projects_on_user_id"
add_index "projects", ["user_id", "name"], :name => "index_projects_on_user_id_and_name"
create_table "sessions", :force => true do |t|
t.column "session_id", :string
t.column "data", :text
t.column "updated_at", :datetime
end
add_index "sessions", ["session_id"], :name => "sessions_session_id_index"
create_table "taggings", :force => true do |t|
t.column "taggable_id", :integer
t.column "tag_id", :integer
t.column "taggable_type", :string
t.column "user_id", :integer
end
add_index "taggings", ["tag_id", "taggable_id", "taggable_type"], :name => "index_taggings_on_tag_id_and_taggable_id_and_taggable_type"
create_table "tags", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime
t.column "updated_at", :datetime
end
add_index "tags", ["name"], :name => "index_tags_on_name"
create_table "todos", :force => true do |t|
t.column "context_id", :integer, :default => 0, :null => false
t.column "description", :string, :limit => 100, :default => "", :null => false
t.column "notes", :text
t.column "created_at", :datetime
t.column "due", :date
t.column "completed_at", :datetime
t.column "project_id", :integer
t.column "user_id", :integer, :default => 0, :null => false
t.column "show_from", :date
t.column "state", :string, :limit => 20, :default => "immediate", :null => false
end
add_index "todos", ["user_id", "state"], :name => "index_todos_on_user_id_and_state"
add_index "todos", ["user_id", "project_id"], :name => "index_todos_on_user_id_and_project_id"
add_index "todos", ["project_id"], :name => "index_todos_on_project_id"
add_index "todos", ["context_id"], :name => "index_todos_on_context_id"
add_index "todos", ["user_id", "context_id"], :name => "index_todos_on_user_id_and_context_id"
create_table "users", :force => true do |t|
t.column "login", :string, :limit => 80
t.column "crypted_password", :string, :limit => 40
t.column "token", :string
t.column "is_admin", :integer, :limit => 4, :default => 0, :null => false
t.column "first_name", :string
t.column "last_name", :string
t.column "auth_type", :string, :default => "database", :null => false
t.column "open_id_url", :string
t.column "remember_token", :string
t.column "remember_token_expires_at", :datetime
end
add_index "users", ["login"], :name => "index_users_on_login"
create_table "whales", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
create_table "wild_boars", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime, :null => false
t.column "updated_at", :datetime, :null => false
end
end

View file

@ -47,7 +47,7 @@ module LoginSystem
def login_or_feed_token_required
if ['rss', 'atom', 'txt', 'ics'].include?(params[:format])
if user = User.find_by_word(params[:token])
if user = User.find_by_token(params[:token])
set_current_user(user)
return true
end

View file

@ -3,7 +3,7 @@ admin_user:
id: 1
login: admin
crypted_password: <%= Digest::SHA1.hexdigest("#{Tracks::Config.salt}--abracadabra--") %>
word: <%= Digest::SHA1.hexdigest("adminSat Feb 25 17:14:00 GMT 20060.236961325863376") %>
token: <%= Digest::SHA1.hexdigest("adminSat Feb 25 17:14:00 GMT 20060.236961325863376") %>
is_admin: true
first_name: Admin
last_name: Schmadmin
@ -13,7 +13,7 @@ other_user:
id: 2
login: jane
crypted_password: <%= Digest::SHA1.hexdigest("#{Tracks::Config.salt}--sesame--") %>
word: <%= Digest::SHA1.hexdigest("janeSun Feb 19 14:42:45 GMT 20060.408173979260027") %>
token: <%= Digest::SHA1.hexdigest("janeSun Feb 19 14:42:45 GMT 20060.408173979260027") %>
is_admin: false
first_name: Jane
last_name: Doe
@ -23,7 +23,7 @@ ldap_user:
id: 3
login: john
crypted_password: test
word: <%= Digest::SHA1.hexdigest("johnSun Feb 19 14:42:45 GMT 20060.408173979260027") %>
token: <%= Digest::SHA1.hexdigest("johnSun Feb 19 14:42:45 GMT 20060.408173979260027") %>
is_admin: false
first_name: John
last_name: Deere

View file

@ -18,7 +18,7 @@ class BackendControllerTest < Test::Rails::TestCase
end
def test_new_todo_fails_with_context_that_does_not_belong_to_user
assert_raise(CannotAccessContext, "Cannot access a context that does not belong to this user.") { @controller.new_todo(users('other_user').login, users('other_user').word, contexts('agenda').id, 'test') }
assert_raise(CannotAccessContext, "Cannot access a context that does not belong to this user.") { @controller.new_todo(users('other_user').login, users('other_user').token, contexts('agenda').id, 'test') }
end
def test_new_rich_todo_fails_with_incorrect_token
@ -39,7 +39,7 @@ class BackendControllerTest < Test::Rails::TestCase
def test_new_rich_todo_creates_todo_with_new_project
max_todo_id = Todo.maximum('id')
max_project_id = Project.maximum('id')
@controller.new_rich_todo(users(:admin_user).login, users(:admin_user).word, contexts(:agenda).id, 'Call mfox @call > new:Run for president')
@controller.new_rich_todo(users(:admin_user).login, users(:admin_user).token, contexts(:agenda).id, 'Call mfox @call > new:Run for president')
todo = Todo.find(:first, :conditions => ["id > ?", max_todo_id])
new_project = Project.find(:first, :conditions => ["id > ?", max_project_id])
assert_equal(users(:admin_user).id, todo.user_id)
@ -50,7 +50,7 @@ class BackendControllerTest < Test::Rails::TestCase
def assert_new_rich_todo_creates_mfox_todo(description_input)
max_id = Todo.maximum('id')
@controller.new_rich_todo(users(:admin_user).login, users(:admin_user).word, contexts(:agenda).id, 'Call mfox @cal > Build')
@controller.new_rich_todo(users(:admin_user).login, users(:admin_user).token, contexts(:agenda).id, 'Call mfox @cal > Build')
todo = Todo.find(:first, :conditions => ["id > ?", max_id])
assert_equal(users(:admin_user).id, todo.user_id)
assert_equal(contexts(:call).id, todo.context_id)
@ -59,7 +59,7 @@ class BackendControllerTest < Test::Rails::TestCase
end
def test_new_rich_todo_fails_with_context_that_does_not_belong_to_user
assert_raise(CannotAccessContext, "Cannot access a context that does not belong to this user.") { @controller.new_rich_todo(users('other_user').login, users('other_user').word, contexts('agenda').id, 'test') }
assert_raise(CannotAccessContext, "Cannot access a context that does not belong to this user.") { @controller.new_rich_todo(users('other_user').login, users('other_user').token, contexts('agenda').id, 'test') }
end
def test_list_projects_fails_with_incorrect_token

View file

@ -82,7 +82,7 @@ class ContextsControllerTest < TodoContainerControllerTestBase
def test_rss_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "rss", :token => users(:admin_user).word }
get :index, { :format => "rss", :token => users(:admin_user).token }
assert_response :ok
end
@ -121,7 +121,7 @@ class ContextsControllerTest < TodoContainerControllerTestBase
def test_atom_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "atom", :token => users(:admin_user).word }
get :index, { :format => "atom", :token => users(:admin_user).token }
assert_response :ok
end
@ -146,7 +146,7 @@ class ContextsControllerTest < TodoContainerControllerTestBase
def test_text_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "txt", :token => users(:admin_user).word }
get :index, { :format => "txt", :token => users(:admin_user).token }
assert_response :ok
end

View file

@ -136,7 +136,7 @@ class ProjectsControllerTest < TodoContainerControllerTestBase
def test_rss_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "rss", :token => users(:admin_user).word }
get :index, { :format => "rss", :token => users(:admin_user).token }
assert_response :ok
end
@ -175,7 +175,7 @@ class ProjectsControllerTest < TodoContainerControllerTestBase
def test_atom_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "atom", :token => users(:admin_user).word }
get :index, { :format => "atom", :token => users(:admin_user).token }
assert_response :ok
end
@ -211,7 +211,7 @@ class ProjectsControllerTest < TodoContainerControllerTestBase
def test_text_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "txt", :token => users(:admin_user).word }
get :index, { :format => "txt", :token => users(:admin_user).token }
assert_response :ok
end

View file

@ -179,7 +179,7 @@ class TodosControllerTest < Test::Rails::TestCase
def test_rss_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "rss", :token => users(:admin_user).word }
get :index, { :format => "rss", :token => users(:admin_user).token }
assert_response :ok
end
@ -214,7 +214,7 @@ class TodosControllerTest < Test::Rails::TestCase
def test_atom_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "atom", :token => users(:admin_user).word }
get :index, { :format => "atom", :token => users(:admin_user).token }
assert_response :ok
end
@ -240,7 +240,7 @@ class TodosControllerTest < Test::Rails::TestCase
def test_text_feed_accessible_to_anonymous_user_with_valid_token
@request.session['user_id'] = nil
get :index, { :format => "txt", :token => users(:admin_user).word }
get :index, { :format => "txt", :token => users(:admin_user).token }
assert_response :ok
end

View file

@ -16,109 +16,109 @@ class FeedSmokeTest < ActionController::IntegrationTest
end
def test_last_15_actions_rss
assert_success "/todos.rss?token=#{ users(:admin_user).word }&limit=15"
assert_success "/todos.rss?token=#{ users(:admin_user).token }&limit=15"
end
def test_last_15_actions_atom
assert_success "/todos.atom?token=#{ users(:admin_user).word }&limit=15"
assert_success "/todos.atom?token=#{ users(:admin_user).token }&limit=15"
end
def test_last_15_actions_txt
assert_success "/todos.txt?token=#{ users(:admin_user).word }&limit=15"
assert_success "/todos.txt?token=#{ users(:admin_user).token }&limit=15"
end
def test_last_15_actions_ical
assert_success "/todos.ics?token=#{ users(:admin_user).word }&limit=15"
assert_success "/todos.ics?token=#{ users(:admin_user).token }&limit=15"
end
def test_all_actions_rss
assert_success "/todos.rss?token=#{ users(:admin_user).word }"
assert_success "/todos.rss?token=#{ users(:admin_user).token }"
end
def test_all_actions_txt
assert_success "/todos.txt?token=#{ users(:admin_user).word }"
assert_success "/todos.txt?token=#{ users(:admin_user).token }"
end
def test_all_actions_ical
assert_success "/todos.ics?token=#{ users(:admin_user).word }"
assert_success "/todos.ics?token=#{ users(:admin_user).token }"
end
def test_all_actions_in_context_rss
assert_success "/contexts/1/todos.rss?token=#{ users(:admin_user).word }"
assert_success "/contexts/1/todos.rss?token=#{ users(:admin_user).token }"
end
def test_all_actions_in_context_txt
assert_success "/contexts/1/todos.txt?token=#{ users(:admin_user).word }"
assert_success "/contexts/1/todos.txt?token=#{ users(:admin_user).token }"
end
def test_all_actions_in_context_ical
assert_success "/contexts/1/todos.ics?token=#{ users(:admin_user).word }"
assert_success "/contexts/1/todos.ics?token=#{ users(:admin_user).token }"
end
def test_all_actions_in_project_rss
assert_success "/projects/1/todos.rss?token=#{ users(:admin_user).word }"
assert_success "/projects/1/todos.rss?token=#{ users(:admin_user).token }"
end
def test_all_actions_in_project_txt
assert_success "/projects/1/todos.txt?token=#{ users(:admin_user).word }"
assert_success "/projects/1/todos.txt?token=#{ users(:admin_user).token }"
end
def test_all_actions_in_project_ical
assert_success "/projects/1/todos.ics?token=#{ users(:admin_user).word }"
assert_success "/projects/1/todos.ics?token=#{ users(:admin_user).token }"
end
def test_all_actions_due_today_or_earlier_rss
assert_success "/todos.rss?token=#{ users(:admin_user).word }&due=0"
assert_success "/todos.rss?token=#{ users(:admin_user).token }&due=0"
end
def test_all_actions_due_today_or_earlier_txt
assert_success "/todos.txt?token=#{ users(:admin_user).word }&due=0"
assert_success "/todos.txt?token=#{ users(:admin_user).token }&due=0"
end
def test_all_actions_due_today_or_earlier_ical
assert_success "/todos.ics?token=#{ users(:admin_user).word }&due=0"
assert_success "/todos.ics?token=#{ users(:admin_user).token }&due=0"
end
def test_all_actions_due_in_7_days_or_earlier_rss
assert_success "/todos.rss?token=#{ users(:admin_user).word }&due=6"
assert_success "/todos.rss?token=#{ users(:admin_user).token }&due=6"
end
def test_all_actions_due_in_7_days_or_earlier_txt
assert_success "/todos.txt?token=#{ users(:admin_user).word }&due=6"
assert_success "/todos.txt?token=#{ users(:admin_user).token }&due=6"
end
def test_all_actions_due_in_7_days_or_earlier_ical
assert_success "/todos.ics?token=#{ users(:admin_user).word }&due=6"
assert_success "/todos.ics?token=#{ users(:admin_user).token }&due=6"
end
def test_all_actions_completed_in_last_7_days_rss
assert_success "/todos.rss?token=#{ users(:admin_user).word }&done=7"
assert_success "/todos.rss?token=#{ users(:admin_user).token }&done=7"
end
def test_all_actions_completed_in_last_7_days_txt
assert_success "/todos.txt?token=#{ users(:admin_user).word }&done=7"
assert_success "/todos.txt?token=#{ users(:admin_user).token }&done=7"
end
def test_all_contexts_rss
assert_success "/contexts.rss?token=#{ users(:admin_user).word }"
assert_success "/contexts.rss?token=#{ users(:admin_user).token }"
end
def test_all_contexts_txt
assert_success "/contexts.txt?token=#{ users(:admin_user).word }"
assert_success "/contexts.txt?token=#{ users(:admin_user).token }"
end
def test_all_projects_rss
assert_success "/projects.rss?token=#{ users(:admin_user).word }"
assert_success "/projects.rss?token=#{ users(:admin_user).token }"
end
def test_all_projects_txt
assert_success "/projects.txt?token=#{ users(:admin_user).word }"
assert_success "/projects.txt?token=#{ users(:admin_user).token }"
end
def test_all_projects_txt_with_hidden_project
p = projects(:timemachine)
p.hide!
assert_success "/projects.txt?token=#{ users(:admin_user).word }"
assert_success "/projects.txt?token=#{ users(:admin_user).token }"
end
private

View file

@ -34,7 +34,7 @@ class UserTest < Test::Rails::TestCase
assert_equal 1, @admin_user.id
assert_equal "admin", @admin_user.login
assert_equal "#{Digest::SHA1.hexdigest("#{Tracks::Config.salt}--abracadabra--")}", @admin_user.crypted_password
assert_not_nil @admin_user.word
assert_not_nil @admin_user.token
assert @admin_user.is_admin
end
@ -44,7 +44,7 @@ class UserTest < Test::Rails::TestCase
assert_equal 2, @other_user.id
assert_equal "jane", @other_user.login
assert_equal "#{Digest::SHA1.hexdigest("#{Tracks::Config.salt}--sesame--")}", @other_user.crypted_password
assert_not_nil @other_user.word
assert_not_nil @other_user.token
assert @other_user.is_admin == false || @other_user.is_admin == 0
end
@ -178,9 +178,9 @@ class UserTest < Test::Rails::TestCase
assert User.no_users_yet?
end
def test_crypt_word_updates_word
assert_value_changed @admin_user, :word do
@admin_user.send :crypt_word
def test_crypt_token_updates_token
assert_value_changed @admin_user, :token do
@admin_user.send :crypt_token
end
end
@ -192,7 +192,7 @@ class UserTest < Test::Rails::TestCase
@other_user.auth_type = 'dnacheck'
assert !@other_user.save
assert_equal 1, @other_user.errors.count
assert_equal "not a valid authentication type", @other_user.errors.on(:auth_type)
assert_equal "not a valid authentication type (dnacheck)", @other_user.errors.on(:auth_type)
end
def test_authenticate_can_use_ldap