diff options
-rw-r--r-- | app/controllers/mail_handler_controller.rb | 4 | ||||
-rw-r--r-- | app/views/mail_handler/new.html.erb | 43 | ||||
-rw-r--r-- | config/routes.rb | 4 | ||||
-rw-r--r-- | test/functional/mail_handler_controller_test.rb | 9 | ||||
-rw-r--r-- | test/integration/routing/mail_handler_test.rb | 1 |
5 files changed, 59 insertions, 2 deletions
diff --git a/app/controllers/mail_handler_controller.rb b/app/controllers/mail_handler_controller.rb index 11cf40009..53d37ae7d 100644 --- a/app/controllers/mail_handler_controller.rb +++ b/app/controllers/mail_handler_controller.rb @@ -18,6 +18,10 @@ class MailHandlerController < ActionController::Base before_filter :check_credential + # Displays the email submission form + def new + end + # Submits an incoming email to MailHandler def index options = params.dup diff --git a/app/views/mail_handler/new.html.erb b/app/views/mail_handler/new.html.erb new file mode 100644 index 000000000..a9d069650 --- /dev/null +++ b/app/views/mail_handler/new.html.erb @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<style> + label {display:block;margin:0.5em;} +</style> +</head> +<body> +<h1>Redmine Mail Handler</h1> + +<%= form_tag({}, :multipart => true, :action => 'post') do %> + <%= hidden_field_tag 'key', params[:key] %> + + <fieldset> + <legend>Raw Email</legend> + <%= text_area_tag 'email', '', :style => 'width:95%; height:400px;' %></label> + </fieldset> + + <fieldset> + <legend>Options</legend> + <label>unknown_user: <%= select_tag 'unknown_user', options_for_select(['', 'ignore', 'accept', 'create']) %></label> + <label>default_group: <%= text_field_tag 'default_group' %></label> + <label>no_account_notice: <%= check_box_tag 'no_account_notice', 1 %></label> + <label>no_notification: <%= check_box_tag 'no_notification', 1 %></label> + <label>no_permission_check: <%= check_box_tag 'no_permission_check', 1 %></label> + </fieldset> + + <fieldset> + <legend>Issue attributes options</legend> + <label>project: <%= text_field_tag 'issue[project]' %></label> + <label>status: <%= text_field_tag 'issue[status]' %></label> + <label>tracker: <%= text_field_tag 'issue[tracker]' %></label> + <label>category: <%= text_field_tag 'issue[category]' %></label> + <label>priority: <%= text_field_tag 'issue[priority]' %></label> + <label>private: <%= check_box_tag 'issue[private]', 1 %></label> + <label>allow_override: <%= text_field_tag 'allow_override' %></label> + </fieldset> + + <p><%= submit_tag 'Submit Email' %></p> +<% end %> +</body> +</html> diff --git a/config/routes.rb b/config/routes.rb index 30cb694ff..14321dc3e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -315,7 +315,9 @@ Rails.application.routes.draw do get 'projects/:id/search', :controller => 'search', :action => 'index' get 'search', :controller => 'search', :action => 'index' - match 'mail_handler', :controller => 'mail_handler', :action => 'index', :via => :post + + get 'mail_handler', :to => 'mail_handler#new' + post 'mail_handler', :to => 'mail_handler#index' match 'admin', :controller => 'admin', :action => 'index', :via => :get match 'admin/projects', :controller => 'admin', :action => 'projects', :via => :get diff --git a/test/functional/mail_handler_controller_test.rb b/test/functional/mail_handler_controller_test.rb index a966b774d..465b29c39 100644 --- a/test/functional/mail_handler_controller_test.rb +++ b/test/functional/mail_handler_controller_test.rb @@ -77,7 +77,6 @@ class MailHandlerControllerTest < ActionController::TestCase end def test_should_not_allow_with_wrong_key - # Disable API Setting.mail_handler_api_enabled = 1 Setting.mail_handler_api_key = 'secret' @@ -86,4 +85,12 @@ class MailHandlerControllerTest < ActionController::TestCase end assert_response 403 end + + def test_new + Setting.mail_handler_api_enabled = 1 + Setting.mail_handler_api_key = 'secret' + + get :new, :key => 'secret' + assert_response :success + end end diff --git a/test/integration/routing/mail_handler_test.rb b/test/integration/routing/mail_handler_test.rb index 13505c47d..d4b3e4ba4 100644 --- a/test/integration/routing/mail_handler_test.rb +++ b/test/integration/routing/mail_handler_test.rb @@ -19,6 +19,7 @@ require File.expand_path('../../../test_helper', __FILE__) class RoutingMailHandlerTest < Redmine::RoutingTest def test_mail_handler + should_route 'GET /mail_handler' => 'mail_handler#new' should_route 'POST /mail_handler' => 'mail_handler#index' end end |