BigW Consortium Gitlab

profile_spec.rb 3.49 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
require 'spec_helper'
require 'email_spec'

describe Notify do
  include EmailSpec::Matchers
  include_context 'gitlab email notification'

  describe 'profile notifications' do
    describe 'for new users, the email' do
      let(:example_site_path) { root_path }
      let(:new_user) { create(:user, email: new_user_address, created_by_id: 1) }
      let(:token) { 'kETLwRaayvigPq_x3SNM' }
13

14 15 16 17 18 19 20 21 22 23 24 25 26 27
      subject { Notify.new_user_email(new_user.id, token) }

      it_behaves_like 'an email sent from GitLab'
      it_behaves_like 'a new user email'
      it_behaves_like 'it should not have Gmail Actions links'
      it_behaves_like 'a user cannot unsubscribe through footer link'

      it 'contains the password text' do
        is_expected.to have_body_text /Click here to set your password/
      end

      it 'includes a link for user to set password' do
        params = "reset_password_token=#{token}"
        is_expected.to have_body_text(
28
          %r{http://#{Gitlab.config.gitlab.host}(:\d+)?/users/password/edit\?#{params}}
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
        )
      end

      it 'explains the reset link expiration' do
        is_expected.to have_body_text(/This link is valid for \d+ (hours?|days?)/)
        is_expected.to have_body_text(new_user_password_url)
        is_expected.to have_body_text(/\?user_email=.*%40.*/)
      end
    end

    describe 'for users that signed up, the email' do
      let(:example_site_path) { root_path }
      let(:new_user) { create(:user, email: new_user_address, password: "securePassword") }

      subject { Notify.new_user_email(new_user.id) }

      it_behaves_like 'an email sent from GitLab'
      it_behaves_like 'a new user email'
      it_behaves_like 'it should not have Gmail Actions links'
      it_behaves_like 'a user cannot unsubscribe through footer link'

50
      it 'does not contain the new user\'s password' do
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
        is_expected.not_to have_body_text /password/
      end
    end

    describe 'user added ssh key' do
      let(:key) { create(:personal_key) }

      subject { Notify.new_ssh_key_email(key.id) }

      it_behaves_like 'an email sent from GitLab'
      it_behaves_like 'it should not have Gmail Actions links'
      it_behaves_like 'a user cannot unsubscribe through footer link'

      it 'is sent to the new user' do
        is_expected.to deliver_to key.user.email
      end

      it 'has the correct subject' do
        is_expected.to have_subject /^SSH key was added to your account$/i
      end

      it 'contains the new ssh key title' do
        is_expected.to have_body_text /#{key.title}/
      end

      it 'includes a link to ssh keys page' do
        is_expected.to have_body_text /#{profile_keys_path}/
      end
79 80 81 82

      context 'with SSH key that does not exist' do
        it { expect { Notify.new_ssh_key_email('foo') }.not_to raise_error }
      end
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
    end

    describe 'user added email' do
      let(:email) { create(:email) }

      subject { Notify.new_email_email(email.id) }

      it_behaves_like 'it should not have Gmail Actions links'
      it_behaves_like 'a user cannot unsubscribe through footer link'

      it 'is sent to the new user' do
        is_expected.to deliver_to email.user.email
      end

      it 'has the correct subject' do
        is_expected.to have_subject /^Email was added to your account$/i
      end

      it 'contains the new email address' do
        is_expected.to have_body_text /#{email.email}/
      end

      it 'includes a link to emails page' do
        is_expected.to have_body_text /#{profile_emails_path}/
      end
    end
  end
end