mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-19 09:36:47 +10:00
Merge branch 'rename-reply-by-email' into 'master'
Rename reply_by_email to incoming_email to prepare for the future. Closes #2579. See merge request !1367
This commit is contained in:
@@ -110,7 +110,7 @@ class Notify < BaseMailer
|
||||
if reply_key
|
||||
headers['X-GitLab-Reply-Key'] = reply_key
|
||||
|
||||
address = Mail::Address.new(Gitlab::ReplyByEmail.reply_address(reply_key))
|
||||
address = Mail::Address.new(Gitlab::IncomingEmail.reply_address(reply_key))
|
||||
address.display_name = @project.name_with_namespace
|
||||
|
||||
headers['Reply-To'] = address
|
||||
@@ -150,6 +150,6 @@ class Notify < BaseMailer
|
||||
end
|
||||
|
||||
def reply_key
|
||||
@reply_key ||= Gitlab::ReplyByEmail.reply_key
|
||||
@reply_key ||= SentNotification.reply_key
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,6 +25,12 @@ class SentNotification < ActiveRecord::Base
|
||||
validates :line_code, format: { with: /\A[a-z0-9]+_\d+_\d+\Z/ }, allow_blank: true
|
||||
|
||||
class << self
|
||||
def reply_key
|
||||
return nil unless Gitlab::IncomingEmail.enabled?
|
||||
|
||||
SecureRandom.hex(16)
|
||||
end
|
||||
|
||||
def for(reply_key)
|
||||
find_by(reply_key: reply_key)
|
||||
end
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
%p
|
||||
Reply by email
|
||||
%span.light.pull-right
|
||||
= boolean_to_icon Gitlab::ReplyByEmail.enabled?
|
||||
= boolean_to_icon Gitlab::IncomingEmail.enabled?
|
||||
.col-md-4
|
||||
%h4
|
||||
Components
|
||||
|
||||
@@ -4,7 +4,7 @@ class EmailReceiverWorker
|
||||
sidekiq_options queue: :incoming_email
|
||||
|
||||
def perform(raw)
|
||||
return unless Gitlab::ReplyByEmail.enabled?
|
||||
return unless Gitlab::IncomingEmail.enabled?
|
||||
|
||||
begin
|
||||
Gitlab::Email::Receiver.new(raw).execute
|
||||
|
||||
@@ -96,10 +96,10 @@ production: &base
|
||||
|
||||
## Reply by email
|
||||
# Allow users to comment on issues and merge requests by replying to notification emails.
|
||||
# For documentation on how to set this up, see http://doc.gitlab.com/ce/reply_by_email/README.html
|
||||
reply_by_email:
|
||||
# For documentation on how to set this up, see http://doc.gitlab.com/ce/incoming_email/README.html
|
||||
incoming_email:
|
||||
enabled: false
|
||||
address: "replies+%{reply_key}@gitlab.example.com"
|
||||
address: "incoming+%{key}@gitlab.example.com"
|
||||
|
||||
## Gravatar
|
||||
## For Libravatar see: http://doc.gitlab.com/ce/customization/libravatar.html
|
||||
@@ -425,4 +425,4 @@ test:
|
||||
sync_ssh_keys: false
|
||||
|
||||
staging:
|
||||
<<: *base
|
||||
<<: *base
|
||||
|
||||
@@ -187,8 +187,8 @@ Settings.gitlab_ci['builds_path'] = File.expand_path(Settings.gitlab_ci[
|
||||
#
|
||||
# Reply by email
|
||||
#
|
||||
Settings['reply_by_email'] ||= Settingslogic.new({})
|
||||
Settings.reply_by_email['enabled'] = false if Settings.reply_by_email['enabled'].nil?
|
||||
Settings['incoming_email'] ||= Settingslogic.new({})
|
||||
Settings.incoming_email['enabled'] = false if Settings.incoming_email['enabled'].nil?
|
||||
|
||||
#
|
||||
# Gravatar
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@
|
||||
- [System hooks](system_hooks/system_hooks.md) Notifications when users, projects and keys are changed.
|
||||
- [Update](update/README.md) Update guides to upgrade your installation.
|
||||
- [Welcome message](customization/welcome_message.md) Add a custom welcome message to the sign-in page.
|
||||
- [Reply by email](reply_by_email/README.md) Allow users to comment on issues and merge requests by replying to notification emails.
|
||||
- [Reply by email](incoming_email/README.md) Allow users to comment on issues and merge requests by replying to notification emails.
|
||||
- [Migrate GitLab CI to CE/EE](migrate_ci_to_ce/README.md) Follow this guide to migrate your existing GitLab CI data to GitLab CE/EE.
|
||||
|
||||
### Administrator documentation
|
||||
|
||||
@@ -12,24 +12,24 @@ To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these
|
||||
|
||||
## Set it up
|
||||
|
||||
In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
|
||||
|
||||
### Omnibus package installations
|
||||
|
||||
1. Find the `reply_by_email` section in `/etc/gitlab/gitlab.rb`, enable the feature, enter the email address including a placeholder for the `reply_key` and fill in the details for your specific IMAP server and email account:
|
||||
1. Find the `incoming_email` section in `/etc/gitlab/gitlab.rb`, enable the feature, enter the email address including a placeholder for the `key` that references the item being replied to and fill in the details for your specific IMAP server and email account:
|
||||
|
||||
```ruby
|
||||
gitlab_rails['reply_by_email_enabled'] = true
|
||||
gitlab_rails['reply_by_email_address'] = "gitlab-replies+%{reply_key}@gmail.com"
|
||||
gitlab_rails['reply_by_email_host'] = "imap.gmail.com" # IMAP server host
|
||||
gitlab_rails['reply_by_email_port'] = 993 # IMAP server port
|
||||
gitlab_rails['reply_by_email_ssl'] = true # Whether the IMAP server uses SSL
|
||||
gitlab_rails['reply_by_email_email'] = "gitlab-replies@gmail.com" # Email account username. Usually the full email address.
|
||||
gitlab_rails['reply_by_email_password'] = "password" # Email account password
|
||||
gitlab_rails['reply_by_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox".
|
||||
gitlab_rails['incoming_email_enabled'] = true
|
||||
gitlab_rails['incoming_email_address'] = "gitlab-incoming+%{key}@gmail.com"
|
||||
gitlab_rails['incoming_email_host'] = "imap.gmail.com" # IMAP server host
|
||||
gitlab_rails['incoming_email_port'] = 993 # IMAP server port
|
||||
gitlab_rails['incoming_email_ssl'] = true # Whether the IMAP server uses SSL
|
||||
gitlab_rails['incoming_email_email'] = "gitlab-incoming@gmail.com" # Email account username. Usually the full email address.
|
||||
gitlab_rails['incoming_email_password'] = "password" # Email account password
|
||||
gitlab_rails['incoming_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox".
|
||||
```
|
||||
|
||||
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-replies@gmail.com`.
|
||||
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-incoming@gmail.com`.
|
||||
|
||||
1. Reconfigure GitLab for the changes to take effect:
|
||||
|
||||
@@ -40,7 +40,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
1. Verify that everything is configured correctly:
|
||||
|
||||
```sh
|
||||
sudo gitlab-rake gitlab:reply_by_email:check
|
||||
sudo gitlab-rake gitlab:incoming_email:check
|
||||
```
|
||||
|
||||
1. Reply by email should now be working.
|
||||
@@ -53,19 +53,19 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
cd /home/git/gitlab
|
||||
```
|
||||
|
||||
1. Find the `reply_by_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `reply_key`:
|
||||
1. Find the `incoming_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `key` that references the item being replied to:
|
||||
|
||||
```sh
|
||||
sudo editor config/gitlab.yml
|
||||
```
|
||||
|
||||
```yaml
|
||||
reply_by_email:
|
||||
incoming_email:
|
||||
enabled: true
|
||||
address: "gitlab-replies+%{reply_key}@gmail.com"
|
||||
address: "gitlab-incoming+%{key}@gmail.com"
|
||||
```
|
||||
|
||||
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-replies@gmail.com`.
|
||||
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-incoming@gmail.com`.
|
||||
|
||||
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
|
||||
|
||||
@@ -89,7 +89,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
# Whether the IMAP server uses SSL
|
||||
:ssl: true
|
||||
# Email account username. Usually the full email address.
|
||||
:email: "gitlab-replies@gmail.com"
|
||||
:email: "gitlab-incoming@gmail.com"
|
||||
# Email account password
|
||||
:password: "[REDACTED]"
|
||||
# The name of the mailbox where incoming mail will end up. Usually "inbox".
|
||||
@@ -125,7 +125,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
7. Verify that everything is configured correctly:
|
||||
|
||||
```sh
|
||||
sudo -u git -H bundle exec rake gitlab:reply_by_email:check RAILS_ENV=production
|
||||
sudo -u git -H bundle exec rake gitlab:incoming_email:check RAILS_ENV=production
|
||||
```
|
||||
|
||||
8. Reply by email should now be working.
|
||||
@@ -134,15 +134,15 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
|
||||
1. Go to the GitLab installation directory.
|
||||
|
||||
1. Find the `reply_by_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `reply_key`:
|
||||
1. Find the `incoming_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `key` that references the item being replied to:
|
||||
|
||||
```yaml
|
||||
reply_by_email:
|
||||
incoming_email:
|
||||
enabled: true
|
||||
address: "gitlab-replies+%{reply_key}@gmail.com"
|
||||
address: "gitlab-incoming+%{key}@gmail.com"
|
||||
```
|
||||
|
||||
As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-replies@gmail.com`.
|
||||
As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-incoming@gmail.com`.
|
||||
|
||||
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
|
||||
|
||||
@@ -162,7 +162,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
# Whether the IMAP server uses SSL
|
||||
:ssl: true
|
||||
# Email account username. Usually the full email address.
|
||||
:email: "gitlab-replies@gmail.com"
|
||||
:email: "gitlab-incoming@gmail.com"
|
||||
# Email account password
|
||||
:password: "[REDACTED]"
|
||||
# The name of the mailbox where incoming mail will end up. Usually "inbox".
|
||||
@@ -197,7 +197,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
|
||||
7. Verify that everything is configured correctly:
|
||||
|
||||
```sh
|
||||
bundle exec rake gitlab:reply_by_email:check RAILS_ENV=development
|
||||
bundle exec rake gitlab:incoming_email:check RAILS_ENV=development
|
||||
```
|
||||
|
||||
8. Reply by email should now be working.
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
This document will take you through the steps of setting up a basic Postfix mail server with IMAP authentication on Ubuntu, to be used with Reply by email.
|
||||
|
||||
The instructions make the assumption that you will be using the email address `replies@gitlab.example.com`, that is, username `replies` on host `gitlab.example.com`. Don't forget to change it to your actual host when executing the example code snippets.
|
||||
The instructions make the assumption that you will be using the email address `incoming@gitlab.example.com`, that is, username `incoming` on host `gitlab.example.com`. Don't forget to change it to your actual host when executing the example code snippets.
|
||||
|
||||
## Configure your server firewall
|
||||
|
||||
@@ -27,16 +27,16 @@ The instructions make the assumption that you will be using the email address `r
|
||||
|
||||
## Create user
|
||||
|
||||
1. Create a user for replies.
|
||||
1. Create a user for incoming email.
|
||||
|
||||
```sh
|
||||
sudo useradd -m -s /bin/bash replies
|
||||
sudo useradd -m -s /bin/bash incoming
|
||||
```
|
||||
|
||||
1. Set a password for this user.
|
||||
|
||||
```sh
|
||||
sudo passwd replies
|
||||
sudo passwd incoming
|
||||
```
|
||||
|
||||
Be sure not to forget this, you'll need it later.
|
||||
@@ -70,12 +70,12 @@ The instructions make the assumption that you will be using the email address `r
|
||||
sudo postfix start
|
||||
```
|
||||
|
||||
1. Send the new `replies` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
|
||||
1. Send the new `incoming` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
|
||||
|
||||
```
|
||||
ehlo localhost
|
||||
mail from: root@localhost
|
||||
rcpt to: replies@localhost
|
||||
rcpt to: incoming@localhost
|
||||
data
|
||||
Subject: Re: Some issue
|
||||
|
||||
@@ -86,17 +86,17 @@ The instructions make the assumption that you will be using the email address `r
|
||||
|
||||
(Note: The `.` is a literal period on its own line)
|
||||
|
||||
1. Check if the `replies` user received the email:
|
||||
1. Check if the `incoming` user received the email:
|
||||
|
||||
```sh
|
||||
su - replies
|
||||
su - incoming
|
||||
mail
|
||||
```
|
||||
|
||||
You should see output like this:
|
||||
|
||||
```
|
||||
"/var/mail/replies": 1 message 1 unread
|
||||
"/var/mail/incoming": 1 message 1 unread
|
||||
>U 1 root@localhost 59/2842 Re: Some issue
|
||||
```
|
||||
|
||||
@@ -106,7 +106,7 @@ The instructions make the assumption that you will be using the email address `r
|
||||
q
|
||||
```
|
||||
|
||||
1. Log out of the `replies` account and go back to being `root`:
|
||||
1. Log out of the `incoming` account and go back to being `root`:
|
||||
|
||||
```sh
|
||||
logout
|
||||
@@ -131,18 +131,18 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
|
||||
1. Test the new setup:
|
||||
|
||||
1. Follow steps 1 and 2 of _[Test the out-of-the-box setup](#test-the-out-of-the-box-setup)_.
|
||||
2. Check if the `replies` user received the email:
|
||||
2. Check if the `incoming` user received the email:
|
||||
|
||||
```sh
|
||||
su - replies
|
||||
MAIL=/home/replies/Maildir
|
||||
su - incoming
|
||||
MAIL=/home/incoming/Maildir
|
||||
mail
|
||||
```
|
||||
|
||||
You should see output like this:
|
||||
|
||||
```
|
||||
"/home/replies/Maildir": 1 message 1 unread
|
||||
"/home/incoming/Maildir": 1 message 1 unread
|
||||
>U 1 root@localhost 59/2842 Re: Some issue
|
||||
```
|
||||
|
||||
@@ -152,7 +152,7 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
|
||||
q
|
||||
```
|
||||
|
||||
1. Log out of the `replies` account and go back to being `root`:
|
||||
1. Log out of the `incoming` account and go back to being `root`:
|
||||
|
||||
```sh
|
||||
logout
|
||||
@@ -221,12 +221,12 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
|
||||
|
||||
If you get a `Connection refused` error instead, make sure your firewall is setup to allow inbound traffic on port 25.
|
||||
|
||||
1. Send the `replies` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
|
||||
1. Send the `incoming` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
|
||||
|
||||
```
|
||||
ehlo gitlab.example.com
|
||||
mail from: root@gitlab.example.com
|
||||
rcpt to: replies@gitlab.example.com
|
||||
rcpt to: incoming@gitlab.example.com
|
||||
data
|
||||
Subject: Re: Some issue
|
||||
|
||||
@@ -237,18 +237,18 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
|
||||
|
||||
(Note: The `.` is a literal period on its own line)
|
||||
|
||||
1. Check if the `replies` user received the email:
|
||||
1. Check if the `incoming` user received the email:
|
||||
|
||||
```sh
|
||||
su - replies
|
||||
MAIL=/home/replies/Maildir
|
||||
su - incoming
|
||||
MAIL=/home/incoming/Maildir
|
||||
mail
|
||||
```
|
||||
|
||||
You should see output like this:
|
||||
|
||||
```
|
||||
"/home/replies/Maildir": 1 message 1 unread
|
||||
"/home/incoming/Maildir": 1 message 1 unread
|
||||
>U 1 root@gitlab.example.com 59/2842 Re: Some issue
|
||||
```
|
||||
|
||||
@@ -258,7 +258,7 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
|
||||
q
|
||||
```
|
||||
|
||||
1. Log out of the `replies` account and go back to being `root`:
|
||||
1. Log out of the `incoming` account and go back to being `root`:
|
||||
|
||||
```sh
|
||||
logout
|
||||
@@ -281,13 +281,13 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
|
||||
- OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc. See COPYING for distribution information.
|
||||
```
|
||||
|
||||
1. Sign in as the `replies` user to test IMAP, by entering the following into the IMAP prompt:
|
||||
1. Sign in as the `incoming` user to test IMAP, by entering the following into the IMAP prompt:
|
||||
|
||||
```
|
||||
a login replies PASSWORD
|
||||
a login incoming PASSWORD
|
||||
```
|
||||
|
||||
Replace PASSWORD with the password you set on the `replies` user earlier.
|
||||
Replace PASSWORD with the password you set on the `incoming` user earlier.
|
||||
|
||||
You should see output like this:
|
||||
|
||||
@@ -307,4 +307,4 @@ If all the tests were successful, Postfix is all set up and ready to receive ema
|
||||
|
||||
---------
|
||||
|
||||
_This document was adapted from https://help.ubuntu.com/community/PostfixBasicSetupHowto, by contributors to the Ubuntu documentation wiki._
|
||||
_This document was adapted from https://help.ubuntu.com/community/PostfixBasicSetupHowto, by contributors to the Ubuntu documentation wiki._
|
||||
@@ -65,7 +65,7 @@ module Gitlab
|
||||
def reply_key
|
||||
reply_key = nil
|
||||
message.to.each do |address|
|
||||
reply_key = Gitlab::ReplyByEmail.reply_key_from_address(address)
|
||||
reply_key = Gitlab::IncomingEmail.key_from_address(address)
|
||||
break if reply_key
|
||||
end
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module Gitlab
|
||||
module ReplyByEmail
|
||||
module IncomingEmail
|
||||
class << self
|
||||
def enabled?
|
||||
config.enabled && address_formatted_correctly?
|
||||
@@ -7,20 +7,14 @@ module Gitlab
|
||||
|
||||
def address_formatted_correctly?
|
||||
config.address &&
|
||||
config.address.include?("%{reply_key}")
|
||||
config.address.include?("%{key}")
|
||||
end
|
||||
|
||||
def reply_key
|
||||
return nil unless enabled?
|
||||
|
||||
SecureRandom.hex(16)
|
||||
def reply_address(key)
|
||||
config.address.gsub('%{key}', key)
|
||||
end
|
||||
|
||||
def reply_address(reply_key)
|
||||
config.address.gsub('%{reply_key}', reply_key)
|
||||
end
|
||||
|
||||
def reply_key_from_address(address)
|
||||
def key_from_address(address)
|
||||
regex = address_regex
|
||||
return unless regex
|
||||
|
||||
@@ -33,7 +27,7 @@ module Gitlab
|
||||
private
|
||||
|
||||
def config
|
||||
Gitlab.config.reply_by_email
|
||||
Gitlab.config.incoming_email
|
||||
end
|
||||
|
||||
def address_regex
|
||||
@@ -41,7 +35,7 @@ module Gitlab
|
||||
return nil unless wildcard_address
|
||||
|
||||
regex = Regexp.escape(wildcard_address)
|
||||
regex = regex.gsub(Regexp.escape('%{reply_key}'), "(.+)")
|
||||
regex = regex.gsub(Regexp.escape('%{key}'), "(.+)")
|
||||
Regexp.new(regex).freeze
|
||||
end
|
||||
end
|
||||
@@ -2,7 +2,7 @@ namespace :gitlab do
|
||||
desc "GitLab | Check the configuration of GitLab and its environment"
|
||||
task check: %w{gitlab:gitlab_shell:check
|
||||
gitlab:sidekiq:check
|
||||
gitlab:reply_by_email:check
|
||||
gitlab:incoming_email:check
|
||||
gitlab:ldap:check
|
||||
gitlab:app:check}
|
||||
|
||||
@@ -634,13 +634,13 @@ namespace :gitlab do
|
||||
end
|
||||
|
||||
|
||||
namespace :reply_by_email do
|
||||
namespace :incoming_email do
|
||||
desc "GitLab | Check the configuration of Reply by email"
|
||||
task check: :environment do
|
||||
warn_user_is_not_gitlab
|
||||
start_checking "Reply by email"
|
||||
|
||||
if Gitlab.config.reply_by_email.enabled
|
||||
if Gitlab.config.incoming_email.enabled
|
||||
check_address_formatted_correctly
|
||||
check_mail_room_config_exists
|
||||
check_imap_authentication
|
||||
@@ -665,12 +665,12 @@ namespace :gitlab do
|
||||
def check_address_formatted_correctly
|
||||
print "Address formatted correctly? ... "
|
||||
|
||||
if Gitlab::ReplyByEmail.address_formatted_correctly?
|
||||
if Gitlab::IncomingEmail.address_formatted_correctly?
|
||||
puts "yes".green
|
||||
else
|
||||
puts "no".red
|
||||
try_fixing_it(
|
||||
"Make sure that the address in config/gitlab.yml includes the '%{reply_key}' placeholder."
|
||||
"Make sure that the address in config/gitlab.yml includes the '%{key}' placeholder."
|
||||
)
|
||||
fix_and_rerun
|
||||
end
|
||||
@@ -689,7 +689,7 @@ namespace :gitlab do
|
||||
"Enable mail_room in the init.d configuration."
|
||||
)
|
||||
for_more_information(
|
||||
"doc/reply_by_email/README.md"
|
||||
"doc/incoming_email/README.md"
|
||||
)
|
||||
fix_and_rerun
|
||||
end
|
||||
@@ -708,7 +708,7 @@ namespace :gitlab do
|
||||
"Enable mail_room in your Procfile."
|
||||
)
|
||||
for_more_information(
|
||||
"doc/reply_by_email/README.md"
|
||||
"doc/incoming_email/README.md"
|
||||
)
|
||||
fix_and_rerun
|
||||
end
|
||||
@@ -753,7 +753,7 @@ namespace :gitlab do
|
||||
"Check that the information in config/mail_room.yml is correct"
|
||||
)
|
||||
for_more_information(
|
||||
"doc/reply_by_email/README.md"
|
||||
"doc/incoming_email/README.md"
|
||||
)
|
||||
fix_and_rerun
|
||||
end
|
||||
@@ -789,7 +789,7 @@ namespace :gitlab do
|
||||
"Check that the information in config/mail_room.yml is correct"
|
||||
)
|
||||
for_more_information(
|
||||
"doc/reply_by_email/README.md"
|
||||
"doc/incoming_email/README.md"
|
||||
)
|
||||
fix_and_rerun
|
||||
end
|
||||
|
||||
@@ -2,7 +2,7 @@ require "spec_helper"
|
||||
|
||||
describe Gitlab::Email::Receiver do
|
||||
before do
|
||||
stub_reply_by_email_setting(enabled: true, address: "reply+%{reply_key}@appmail.adventuretime.ooo")
|
||||
stub_incoming_email_setting(enabled: true, address: "reply+%{key}@appmail.adventuretime.ooo")
|
||||
end
|
||||
|
||||
let(:reply_key) { "59d8df8370b7e95c5a49fbf86aeb2c93" }
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
require "spec_helper"
|
||||
|
||||
describe Gitlab::IncomingEmail do
|
||||
describe "self.enabled?" do
|
||||
context "when reply by email is enabled" do
|
||||
before do
|
||||
stub_incoming_email_setting(enabled: true)
|
||||
end
|
||||
|
||||
context "when the address is valid" do
|
||||
before do
|
||||
stub_incoming_email_setting(address: "replies+%{key}@example.com")
|
||||
end
|
||||
|
||||
it "returns true" do
|
||||
expect(described_class.enabled?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context "when the address is invalid" do
|
||||
before do
|
||||
stub_incoming_email_setting(address: "replies@example.com")
|
||||
end
|
||||
|
||||
it "returns false" do
|
||||
expect(described_class.enabled?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when reply by email is disabled" do
|
||||
before do
|
||||
stub_incoming_email_setting(enabled: false)
|
||||
end
|
||||
|
||||
it "returns false" do
|
||||
expect(described_class.enabled?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "self.reply_address" do
|
||||
before do
|
||||
stub_incoming_email_setting(address: "replies+%{key}@example.com")
|
||||
end
|
||||
|
||||
it "returns the address with an interpolated reply key" do
|
||||
expect(described_class.reply_address("key")).to eq("replies+key@example.com")
|
||||
end
|
||||
end
|
||||
|
||||
context "self.key_from_address" do
|
||||
before do
|
||||
stub_incoming_email_setting(address: "replies+%{key}@example.com")
|
||||
end
|
||||
|
||||
it "returns reply key" do
|
||||
expect(described_class.key_from_address("replies+key@example.com")).to eq("key")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,86 +0,0 @@
|
||||
require "spec_helper"
|
||||
|
||||
describe Gitlab::ReplyByEmail do
|
||||
describe "self.enabled?" do
|
||||
context "when reply by email is enabled" do
|
||||
before do
|
||||
stub_reply_by_email_setting(enabled: true)
|
||||
end
|
||||
|
||||
context "when the address is valid" do
|
||||
before do
|
||||
stub_reply_by_email_setting(address: "replies+%{reply_key}@example.com")
|
||||
end
|
||||
|
||||
it "returns true" do
|
||||
expect(described_class.enabled?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context "when the address is invalid" do
|
||||
before do
|
||||
stub_reply_by_email_setting(address: "replies@example.com")
|
||||
end
|
||||
|
||||
it "returns false" do
|
||||
expect(described_class.enabled?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when reply by email is disabled" do
|
||||
before do
|
||||
stub_reply_by_email_setting(enabled: false)
|
||||
end
|
||||
|
||||
it "returns false" do
|
||||
expect(described_class.enabled?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "self.reply_key" do
|
||||
context "when enabled" do
|
||||
before do
|
||||
allow(described_class).to receive(:enabled?).and_return(true)
|
||||
end
|
||||
|
||||
it "returns a random hex" do
|
||||
key = described_class.reply_key
|
||||
key2 = described_class.reply_key
|
||||
|
||||
expect(key).not_to eq(key2)
|
||||
end
|
||||
end
|
||||
|
||||
context "when disabled" do
|
||||
before do
|
||||
allow(described_class).to receive(:enabled?).and_return(false)
|
||||
end
|
||||
|
||||
it "returns nil" do
|
||||
expect(described_class.reply_key).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "self.reply_address" do
|
||||
before do
|
||||
stub_reply_by_email_setting(address: "replies+%{reply_key}@example.com")
|
||||
end
|
||||
|
||||
it "returns the address with an interpolated reply key" do
|
||||
expect(described_class.reply_address("key")).to eq("replies+key@example.com")
|
||||
end
|
||||
end
|
||||
|
||||
context "self.reply_key_from_address" do
|
||||
before do
|
||||
stub_reply_by_email_setting(address: "replies+%{reply_key}@example.com")
|
||||
end
|
||||
|
||||
it "returns reply key" do
|
||||
expect(described_class.reply_key_from_address("replies+key@example.com")).to eq("key")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -17,8 +17,8 @@ module StubConfiguration
|
||||
allow(Gitlab.config.gravatar).to receive_messages(messages)
|
||||
end
|
||||
|
||||
def stub_reply_by_email_setting(messages)
|
||||
allow(Gitlab.config.reply_by_email).to receive_messages(messages)
|
||||
def stub_incoming_email_setting(messages)
|
||||
allow(Gitlab.config.incoming_email).to receive_messages(messages)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -5,7 +5,7 @@ describe EmailReceiverWorker do
|
||||
|
||||
context "when reply by email is enabled" do
|
||||
before do
|
||||
allow(Gitlab::ReplyByEmail).to receive(:enabled?).and_return(true)
|
||||
allow(Gitlab::IncomingEmail).to receive(:enabled?).and_return(true)
|
||||
end
|
||||
|
||||
it "calls the email receiver" do
|
||||
@@ -33,7 +33,7 @@ describe EmailReceiverWorker do
|
||||
|
||||
context "when reply by email is disabled" do
|
||||
before do
|
||||
allow(Gitlab::ReplyByEmail).to receive(:enabled?).and_return(false)
|
||||
allow(Gitlab::IncomingEmail).to receive(:enabled?).and_return(false)
|
||||
end
|
||||
|
||||
it "doesn't call the email receiver" do
|
||||
|
||||
Reference in New Issue
Block a user