|
- # frozen_string_literal: true
-
- # Set defaults, use debian as base
-
- # Override by platform family
- server_available, server_enabled =
- case platform[:family]
- when 'redhat', 'fedora'
- %w[/etc/nginx/conf.d /etc/nginx/conf.d]
- when 'suse'
- %w[/etc/nginx/vhosts.d /etc/nginx/vhosts.d]
- when 'bsd'
- %w[/usr/local/etc/nginx/sites-available /usr/local/etc/nginx/sites-enabled]
- else
- %w[/etc/nginx/sites-available /etc/nginx/sites-enabled]
- end
-
- nginx_conf, snippets_letsencrypt_conf, file_owner, file_group =
- case platform[:family]
- when 'bsd'
- %w[/usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/snippets/letsencrypt.conf
- root wheel]
- else
- %w[/etc/nginx/nginx.conf /etc/nginx/snippets/letsencrypt.conf root root]
- end
-
- control 'Nginx configuration' do
- title 'should match desired lines'
-
- # main configuration
- describe file(nginx_conf) do
- it { should be_file }
- it { should be_owned_by file_owner }
- it { should be_grouped_into file_group }
- its('mode') { should cmp '0644' }
- its('content') do
- # rubocop:disable Metrics/LineLength
- should include %( log_format main '$remote_addr - $remote_user [$time_local] $status '
- '"$request" $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';)
- # rubocop:enable Metrics/LineLength
- end
- end
-
- # snippets configuration
- describe file(snippets_letsencrypt_conf) do
- it { should be_file }
- it { should be_owned_by file_owner }
- it { should be_grouped_into file_group }
- its('mode') { should cmp '0644' }
- its('content') { should include 'location ^~ /.well-known/acme-challenge/ {' }
- its('content') { should include 'proxy_pass http://localhost:9999;' }
- its('content') { should include '{' }
- end
-
- # sites configuration
- [server_available, server_enabled].each do |dir|
- describe file "#{dir}/default" do
- it { should_not exist }
- end
-
- describe file "#{dir}/mysite" do
- it { should be_file }
- it { should be_owned_by file_owner }
- it { should be_grouped_into file_group }
- its('mode') { should cmp '0644' }
- its('content') { should include 'server_name localhost;' }
- its('content') { should include 'listen 80 default_server;' }
- its('content') { should include 'index index.html index.htm;' }
- its('content') { should include 'location ~ .htm {' }
- its('content') { should include 'try_files $uri $uri/ =404;' }
- its('content') { should include 'include snippets/letsencrypt.conf;' }
- end
- describe file "#{dir}/mysite_with_require" do
- it { should be_file }
- it { should be_owned_by file_owner }
- it { should be_grouped_into file_group }
- its('mode') { should cmp '0644' }
- its('content') { should include 'server_name with-deps;' }
- its('content') { should include 'listen 80;' }
- its('content') { should include 'index index.html index.htm;' }
- its('content') { should include 'location ~ .htm {' }
- its('content') { should include 'try_files $uri $uri/ =404;' }
- end
- end
- end
|