summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/mail_handler_controller.rb4
-rw-r--r--app/views/mail_handler/new.html.erb43
-rw-r--r--config/routes.rb4
-rw-r--r--test/functional/mail_handler_controller_test.rb9
-rw-r--r--test/integration/routing/mail_handler_test.rb1
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