[Logilogi-svn] SF.net SVN: logilogi:[1581] projects/loglog/trunk
Status: Beta
Brought to you by:
wybow
|
From: <wy...@us...> - 2009-09-08 15:03:16
|
Revision: 1581
http://logilogi.svn.sourceforge.net/logilogi/?rev=1581&view=rev
Author: wybow
Date: 2009-09-08 15:03:05 +0000 (Tue, 08 Sep 2009)
Log Message:
-----------
Added test for messages & permission
Modified Paths:
--------------
projects/loglog/trunk/app/controllers/messages_controller.rb
projects/loglog/trunk/db/schema.rb
Added Paths:
-----------
projects/loglog/trunk/app/views/messages/show.erb
projects/loglog/trunk/test/functional/messages_controller_test.rb
Modified: projects/loglog/trunk/app/controllers/messages_controller.rb
===================================================================
--- projects/loglog/trunk/app/controllers/messages_controller.rb 2009-09-08 13:26:16 UTC (rev 1580)
+++ projects/loglog/trunk/app/controllers/messages_controller.rb 2009-09-08 15:03:05 UTC (rev 1581)
@@ -12,29 +12,36 @@
#++#
class MessagesController < ApplicationController
+ ### Filters
+
+ before_filter :find_app
+ before_filter :find, : :show
+
+ ### Filter-functions
+
+ def find
+ @message = Message.find(params[:id])
+ end
+
### REST-methods
def show
- # TODO include channel name
- @message = Message.find(params[:id])
-
respond_to do |format|
format.xml { render :xml => @message }
end
end
def create
- app = App.find_by_name(params[:app_id])
- if current_app == app
+ if current_app == @app
mess = params[:message].dup
ok, last_message = true
if mess[:channel_names]
mess.delete(:channel_names).split(',').each do |channel_name|
- ok = self.save_message(mess, app, channel_name) if ok
+ ok = self.save_message(mess, @app, channel_name) if ok
end
elsif mess[:channel_name]
channel_name = mess.delete(:channel_name)
- ok = self.save_message(mess, app, channel_name)
+ ok = self.save_message(mess, @app, channel_name)
end
if ok
@@ -44,7 +51,8 @@
render :xml => last_message.errors, :status => :unprocessable_entity
end
else
- render :xml => last_message.errors, :status => :unprocessable_entity
+ render :xml => {:error => "You have no permission to do this"},
+ :status => :unprocessable_entity
end
end
Modified: projects/loglog/trunk/db/schema.rb
===================================================================
--- projects/loglog/trunk/db/schema.rb 2009-09-08 13:26:16 UTC (rev 1580)
+++ projects/loglog/trunk/db/schema.rb 2009-09-08 15:03:05 UTC (rev 1581)
@@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20090712120351) do
+ActiveRecord::Schema.define(:version => 20090713120351) do
create_table "apps", :force => true do |t|
t.string "name", :limit => 20, :null => false
@@ -39,6 +39,16 @@
t.datetime "created_at", :null => false
end
+ create_table "sessions", :force => true do |t|
+ t.string "session_id", :null => false
+ t.text "data"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
+ add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
+
create_table "subscriptions", :force => true do |t|
t.integer "user_id", :null => false
t.integer "channel_id", :null => false
Added: projects/loglog/trunk/test/functional/messages_controller_test.rb
===================================================================
--- projects/loglog/trunk/test/functional/messages_controller_test.rb (rev 0)
+++ projects/loglog/trunk/test/functional/messages_controller_test.rb 2009-09-08 15:03:05 UTC (rev 1581)
@@ -0,0 +1,66 @@
+#--#
+# Copyright: (c) 2009 The LogiLogi Foundation <fou...@lo...>
+#
+# License:
+# This file is part of the LogLog program. LogiLogi is Free Software.
+# You can run/distribute/modify LogLog under the terms of the GNU Affero
+# General Public License version 3. The Affero GPL states that running a
+# modified version or a derivative work also requires you to make the source
+# code of that work available to everyone that can interact with it. We
+# chose the Affero GPL to ensure that LogLog remains open and libre
+# (doc/LICENSE contains the full text of the legally binding license).
+#++#
+
+require File.dirname(__FILE__) + '/../test_helper'
+require 'messages_controller'
+
+class MessagesControllerTest < ActionController::TestCase
+ fixtures :all
+
+ def setup
+ @controller = MessagesController.new
+ setup_request
+ end
+
+ ### Actions
+
+ # REST-methods
+
+ def test_show
+ get :show, :app_id => apps(:enll).name,
+ :id => messages(:logi_john_johnson_userjohnjohnson).id,
+ :format => "xml"
+ assert_response :success
+ end
+
+ def test_create
+ enll = apps(:enll)
+ logis = channels(:logis)
+ messages_count = logis.messages.count
+
+ # Not logged in, no message created
+ post :create, :app_id => enll.name, :format => "xml",
+ :message => {
+ :kind => "Logi",
+ :channel_names => logis.name.to_s + ",u_eduard_edison",
+ :title => "This is a logi",
+ :author => "Eduard Edison",
+ :text => "Hi, welcome to this logi",
+ :url => "http://www.yahoo.com"}
+ logis.reload
+ assert_equal messages_count, logis.messages.count
+
+ # Logged in, a message created
+ login(enll)
+ post :create, :app_id => enll.name, :format => "xml",
+ :message => {
+ :kind => "Logi",
+ :channel_names => logis.name.to_s + ",u_eduard_edison",
+ :title => "This is a second logi",
+ :author => "Eduard Edison",
+ :text => "Hi, welcome to another logi",
+ :url => "http://www.yahoo.com"}
+ logis.reload
+ assert_equal messages_count + 1, logis.messages.count
+ end
+end
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|