mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-24 03:00:12 +01:00
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:
parent
5d051181f2
commit
08e5d6069d
16 changed files with 285 additions and 205 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(){
|
||||
|
|
|
|||
|
|
@ -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." %>
|
||||
|
|
|
|||
9
tracks/db/migrate/034_rename_word_to_token.rb
Normal file
9
tracks/db/migrate/034_rename_word_to_token.rb
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
6
tracks/test/fixtures/users.yml
vendored
6
tracks/test/fixtures/users.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue