Welcome to mirror list, hosted at ThFree Co, Russian Federation.

new.html.haml_spec.rb « sessions « devise « views « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 70ca0bb21959c13fc34c743e433d23aebd185194 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
79
80
81
82
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'devise/sessions/new' do
  describe 'marketing text', :saas do
    subject { render(template: 'devise/sessions/new', layout: 'layouts/devise') }

    before do
      stub_devise
      disable_captcha
      stub_feature_flags(restyle_login_page: false)
    end

    it 'when flash is anything it renders marketing text' do
      flash[:notice] = "You can't do that"

      subject

      expect(rendered).to have_content('A complete DevOps platform')
    end

    it 'when flash notice is devise confirmed message it hides marketing text' do
      flash[:notice] = t(:confirmed, scope: [:devise, :confirmations])

      subject

      expect(rendered).not_to have_content('A complete DevOps platform')
    end
  end

  flag_values = [true, false]
  flag_values.each do |val|
    context "with #{val}" do
      before do
        stub_feature_flags(restyle_login_page: val)
      end

      describe 'ldap' do
        include LdapHelpers

        let(:server) { { provider_name: 'ldapmain', label: 'LDAP' }.with_indifferent_access }

        before do
          enable_ldap
          stub_devise
          disable_captcha
          disable_sign_up
          disable_other_signin_methods

          allow(view).to receive(:experiment_enabled?).and_return(false)
        end

        it 'is shown when enabled' do
          render

          expect(rendered).to have_selector('.new-session-tabs')
          expect(rendered).to have_selector('[data-testid="ldap-tab"]')
          expect(rendered).to have_field(_('Username'))
        end

        it 'is not shown when LDAP sign in is disabled' do
          disable_ldap_sign_in

          render

          expect(rendered).to have_content('No authentication methods configured')
          expect(rendered).not_to have_selector('[data-testid="ldap-tab"]')
          expect(rendered).not_to have_field(_('Username'))
        end
      end

      describe 'Google Tag Manager' do
        let!(:gtm_id) { 'GTM-WWKMTWS' }

        subject { rendered }

        before do
          stub_devise
          disable_captcha
          stub_config(extra: { google_tag_manager_id: gtm_id, google_tag_manager_nonce_id: gtm_id })
        end

        describe 'when Google Tag Manager is enabled' do
          before do
            enable_gtm
            render
          end

          it { is_expected.to match /www.googletagmanager.com/ }
        end

        describe 'when Google Tag Manager is disabled' do
          before do
            disable_gtm
            render
          end

          it { is_expected.not_to match /www.googletagmanager.com/ }
        end
      end
    end
  end

  def disable_other_signin_methods
    allow(view).to receive(:password_authentication_enabled_for_web?).and_return(false)
    allow(view).to receive(:omniauth_enabled?).and_return(false)
  end

  def disable_sign_up
    allow(view).to receive(:allow_signup?).and_return(false)
  end

  def stub_devise
    allow(view).to receive(:devise_mapping).and_return(Devise.mappings[:user])
    allow(view).to receive(:resource).and_return(spy)
    allow(view).to receive(:resource_name).and_return(:user)
  end

  def enable_ldap
    stub_ldap_setting(enabled: true)
    allow(view).to receive(:ldap_servers).and_return([server])
    allow(view).to receive(:form_based_providers).and_return([:ldapmain])
    allow(view).to receive(:omniauth_callback_path).with(:user, 'ldapmain').and_return('/ldapmain')
  end

  def disable_ldap_sign_in
    allow(view).to receive(:ldap_sign_in_enabled?).and_return(false)
    allow(view).to receive(:ldap_servers).and_return([])
  end

  def disable_captcha
    allow(view).to receive(:captcha_enabled?).and_return(false)
    allow(view).to receive(:captcha_on_login_required?).and_return(false)
  end

  def disable_gtm
    allow(view).to receive(:google_tag_manager_enabled?).and_return(false)
  end

  def enable_gtm
    allow(view).to receive(:google_tag_manager_enabled?).and_return(true)
  end
end