File: openstacklib_policy_base_spec.rb

package info (click to toggle)
puppet-module-openstacklib 25.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 968 kB
  • sloc: ruby: 4,500; python: 38; sh: 22; makefile: 10
file content (116 lines) | stat: -rw-r--r-- 3,412 bytes parent folder | download
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
require 'spec_helper'

describe 'openstacklib::policy::base' do
  shared_examples 'openstacklib::policy::base' do
    let :title do
      'context_is_admin or owner'
    end

    context 'with policy.yaml' do
      let :params do
        {
          :file_path  => '/etc/nova/policy.yaml',
          :value      => 'foo:bar',
          :file_mode  => '0644',
          :file_user  => 'foo',
          :file_group => 'bar',
        }
      end

      it { should contain_openstacklib__policy__default('/etc/nova/policy.yaml').with(
        :file_mode    => '0644',
        :file_user    => 'foo',
        :file_group   => 'bar',
        :file_format  => 'yaml',
        :purge_config => false,
      )}

      it { should contain_file_line('/etc/nova/policy.yaml-context_is_admin or owner').with(
        :path  => '/etc/nova/policy.yaml',
        :line  => '\'context_is_admin or owner\': \'foo:bar\'',
        :match => '^[\'"]?context_is_admin or owner(?!:)[\'"]?\s*:.+'
      ) }

      context 'with single-quotes in value' do
        before do
          params.merge!({
            :value => 'foo:\'bar\''
          })
        end

        it { should contain_file_line('/etc/nova/policy.yaml-context_is_admin or owner').with(
          :path  => '/etc/nova/policy.yaml',
          :line  => '\'context_is_admin or owner\': \'foo:\'\'bar\'\'\'',
          :match => '^[\'"]?context_is_admin or owner(?!:)[\'"]?\s*:.+'
        ) }
      end

      context 'with pre-formatted single-quotes in value' do
        before do
          params.merge!({
            :value => 'foo:\'\'bar\'\''
          })
        end

        it { should contain_file_line('/etc/nova/policy.yaml-context_is_admin or owner').with(
          :path  => '/etc/nova/policy.yaml',
          :line  => '\'context_is_admin or owner\': \'foo:\'\'bar\'\'\'',
          :match => '^[\'"]?context_is_admin or owner(?!:)[\'"]?\s*:.+'
        ) }
      end
    end

    context 'with purge_config enabled' do
      let :params do
        {
          :file_path    => '/etc/nova/policy.yaml',
          :value        => 'foo:bar',
          :file_mode    => '0644',
          :file_user    => 'foo',
          :file_group   => 'bar',
          :purge_config => true,
        }
      end

      it { should contain_openstacklib__policy__default('/etc/nova/policy.yaml').with(
        :file_mode    => '0644',
        :file_user    => 'foo',
        :file_group   => 'bar',
        :file_format  => 'yaml',
        :purge_config => true,
      )}
    end

    context 'with key overridden' do
      let :params do
        {
          :file_path   => '/etc/nova/policy.yaml',
          :key         => 'context_is_admin',
          :value       => 'foo:bar',
          :file_mode   => '0644',
          :file_user   => 'foo',
          :file_group  => 'bar',
          :file_format => 'yaml',
        }
      end

      it { should contain_file_line('/etc/nova/policy.yaml-context_is_admin').with(
        :path  => '/etc/nova/policy.yaml',
        :line  => '\'context_is_admin\': \'foo:bar\'',
        :match => '^[\'"]?context_is_admin(?!:)[\'"]?\s*:.+'
      ) }
    end
  end

  on_supported_os({
    :supported_os => OSDefaults.get_supported_os
  }).each do |os,facts|
    context "on #{os}" do
      let (:facts) do
        facts.merge!(OSDefaults.get_facts())
      end

      it_behaves_like 'openstacklib::policy::base'
    end
  end
end