Add multiple email participants via a single quick action [RUN ALL RSPEC] [RUN AS-IF-FOSS]

Merged Lee Tickett requested to merge 225309-add-invite_email-quick-action into master

What does this MR do?

Adds the /invite_email quick action (with preview as per designs). When used, adds a system note and the email_participant row in the db

This is behind a feature flag issue_email_participants

Closes #225309 (closed)

Screenshots (strongly suggested)

image

image

Migrations

lee@cc-gdk-2:~/gitlab-development-kit/gitlab$ bundle exec rake db:migrate:up VERSION=20201209163113 RAILS_ENV=development
== 20201209163113 RecreateIndexIssueEmailParticipantsOnIssueIdAndEmail: migrating 
-- transaction_open?()
   -> 0.0000s
-- index_exists?(:issue_email_participants, "issue_id, lower(email)", {:unique=>true, :name=>"index_issue_email_participants_on_issue_id_and_lower_email", :algorithm=>:concurrently})
   -> 0.0022s
-- execute("SET statement_timeout TO 0")
   -> 0.0002s
-- add_index(:issue_email_participants, "issue_id, lower(email)", {:unique=>true, :name=>"index_issue_email_participants_on_issue_id_and_lower_email", :algorithm=>:concurrently})
   -> 0.0029s
-- execute("RESET ALL")
   -> 0.0002s
-- transaction_open?()
   -> 0.0000s
-- indexes(:issue_email_participants)
   -> 0.0014s
-- remove_index(:issue_email_participants, {:algorithm=>:concurrently, :name=>"index_issue_email_participants_on_issue_id_and_email"})
   -> 0.0012s
== 20201209163113 RecreateIndexIssueEmailParticipantsOnIssueIdAndEmail: migrated (0.0090s)

lee@cc-gdk-2:~/gitlab-development-kit/gitlab$ bundle exec rake db:migrate:down VERSION=20201209163113 RAILS_ENV=development
== 20201209163113 RecreateIndexIssueEmailParticipantsOnIssueIdAndEmail: reverting 
-- transaction_open?()
   -> 0.0000s
-- index_exists?(:issue_email_participants, [:issue_id, :email], {:unique=>true, :name=>"index_issue_email_participants_on_issue_id_and_email", :algorithm=>:concurrently})
   -> 0.0020s
-- execute("SET statement_timeout TO 0")
   -> 0.0001s
-- add_index(:issue_email_participants, [:issue_id, :email], {:unique=>true, :name=>"index_issue_email_participants_on_issue_id_and_email", :algorithm=>:concurrently})
   -> 0.0032s
-- execute("RESET ALL")
   -> 0.0001s
-- transaction_open?()
   -> 0.0000s
-- indexes(:issue_email_participants)
   -> 0.0013s
-- remove_index(:issue_email_participants, {:algorithm=>:concurrently, :name=>"index_issue_email_participants_on_issue_id_and_lower_email"})
   -> 0.0011s
== 20201209163113 RecreateIndexIssueEmailParticipantsOnIssueIdAndEmail: reverted (0.0085s)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #225309 (closed)

Edited by 🤖 GitLab Bot 🤖