application_setting_spec.rb 4.34 KB
Newer Older
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
# == Schema Information
#
# Table name: application_settings
#
#  id                                :integer          not null, primary key
#  default_projects_limit            :integer
#  signup_enabled                    :boolean
#  signin_enabled                    :boolean
#  gravatar_enabled                  :boolean
#  sign_in_text                      :text
#  created_at                        :datetime
#  updated_at                        :datetime
#  home_page_url                     :string(255)
#  default_branch_protection         :integer          default(2)
#  restricted_visibility_levels      :text
#  version_check_enabled             :boolean          default(TRUE)
#  max_attachment_size               :integer          default(10), not null
#  default_project_visibility        :integer
#  default_snippet_visibility        :integer
#  restricted_signup_domains         :text
#  user_oauth_applications           :boolean          default(TRUE)
#  after_sign_out_path               :string(255)
#  session_expire_delay              :integer          default(10080), not null
#  import_sources                    :text
#  help_page_text                    :text
#  admin_notification_email          :string(255)
#  shared_runners_enabled            :boolean          default(TRUE), not null
#  max_artifacts_size                :integer          default(100), not null
#  runners_registration_token        :string
#  require_two_factor_authentication :boolean          default(FALSE)
#  two_factor_grace_period           :integer          default(48)
#  metrics_enabled                   :boolean          default(FALSE)
#  metrics_host                      :string           default("localhost")
#  metrics_username                  :string
#  metrics_password                  :string
#  metrics_pool_size                 :integer          default(16)
#  metrics_timeout                   :integer          default(10)
#  metrics_method_call_threshold     :integer          default(10)
#  recaptcha_enabled                 :boolean          default(FALSE)
#  recaptcha_site_key                :string
#  recaptcha_private_key             :string
#  metrics_port                      :integer          default(8089)
#  sentry_enabled                    :boolean          default(FALSE)
#  sentry_dsn                        :string
#

47
48
49
require 'spec_helper'

describe ApplicationSetting, models: true do
Kamil Trzcinski's avatar
Kamil Trzcinski committed
50
  let(:setting) { ApplicationSetting.create_from_defaults }
51

Kamil Trzcinski's avatar
Kamil Trzcinski committed
52
  it { expect(setting).to be_valid }
53

Robert Speicher's avatar
Robert Speicher committed
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  describe 'validations' do
    let(:http)  { 'http://example.com' }
    let(:https) { 'https://example.com' }
    let(:ftp)   { 'ftp://example.com' }

    it { is_expected.to allow_value(nil).for(:home_page_url) }
    it { is_expected.to allow_value(http).for(:home_page_url) }
    it { is_expected.to allow_value(https).for(:home_page_url) }
    it { is_expected.not_to allow_value(ftp).for(:home_page_url) }

    it { is_expected.to allow_value(nil).for(:after_sign_out_path) }
    it { is_expected.to allow_value(http).for(:after_sign_out_path) }
    it { is_expected.to allow_value(https).for(:after_sign_out_path) }
    it { is_expected.not_to allow_value(ftp).for(:after_sign_out_path) }
68
69
70
71
72
73
74
75

    it { is_expected.to validate_presence_of(:max_attachment_size) }

    it do
      is_expected.to validate_numericality_of(:max_attachment_size)
        .only_integer
        .is_greater_than(0)
    end
76
77
78
79

    it_behaves_like 'an object with email-formated attributes', :admin_notification_email do
      subject { setting }
    end
Robert Speicher's avatar
Robert Speicher committed
80
81
  end

Kamil Trzcinski's avatar
Kamil Trzcinski committed
82
  context 'restricted signup domains' do
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
    it 'set single domain' do
      setting.restricted_signup_domains_raw = 'example.com'
      expect(setting.restricted_signup_domains).to eq(['example.com'])
    end

    it 'set multiple domains with spaces' do
      setting.restricted_signup_domains_raw = 'example.com *.example.com'
      expect(setting.restricted_signup_domains).to eq(['example.com', '*.example.com'])
    end

    it 'set multiple domains with newlines and a space' do
      setting.restricted_signup_domains_raw = "example.com\n *.example.com"
      expect(setting.restricted_signup_domains).to eq(['example.com', '*.example.com'])
    end

    it 'set multiple domains with commas' do
      setting.restricted_signup_domains_raw = "example.com, *.example.com"
      expect(setting.restricted_signup_domains).to eq(['example.com', '*.example.com'])
    end
  end
103
end