Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / spec / defines / simplerule_spec.rb @ aaa37172

Historique | Voir | Annoter | Télécharger (4,32 ko)

1
require 'spec_helper'
2

    
3
describe 'nftables::simplerule' do
4
  let(:pre_condition) { 'include nftables' }
5

    
6
  let(:title) { 'my_default_rule_name' }
7

    
8
  on_supported_os.each do |os, os_facts|
9
    context "on #{os}" do
10
      let(:facts) { os_facts }
11

    
12
      describe 'minimum instantiation' do
13
        it { is_expected.to compile }
14
        it {
15
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
16
            content: 'accept',
17
            order: '50',
18
          )
19
        }
20
      end
21

    
22
      describe 'port without protocol' do
23
        let(:params) do
24
          {
25
            dport: 333,
26
          }
27
        end
28

    
29
        it { is_expected.not_to compile }
30
      end
31

    
32
      describe 'all parameters provided' do
33
        let(:title) { 'my_big_rule' }
34
        let(:params) do
35
          {
36
            action: 'accept',
37
            comment: 'this is my rule',
38
            dport: 333,
39
            proto: 'udp',
40
            chain: 'default_out',
41
            daddr: '2001:1458::/32',
42
          }
43
        end
44

    
45
        it { is_expected.to compile }
46
        it {
47
          is_expected.to contain_nftables__rule('default_out-my_big_rule').with(
48
            content: 'udp dport 333 ip6 daddr 2001:1458::/32 accept comment "this is my rule"',
49
            order: '50',
50
          )
51
        }
52
      end
53

    
54
      describe 'port range' do
55
        let(:params) do
56
          {
57
            dport: '333-334',
58
            proto: 'tcp',
59
          }
60
        end
61

    
62
        it { is_expected.to compile }
63
        it {
64
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
65
            content: 'tcp dport 333-334 accept',
66
          )
67
        }
68
      end
69

    
70
      describe 'port array' do
71
        let(:params) do
72
          {
73
            dport: [333, 335],
74
            proto: 'tcp',
75
          }
76
        end
77

    
78
        it { is_expected.to compile }
79
        it {
80
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
81
            content: 'tcp dport {333, 335} accept',
82
          )
83
        }
84
      end
85

    
86
      describe 'only IPv4 TCP traffic' do
87
        let(:params) do
88
          {
89
            dport: 333,
90
            proto: 'tcp4',
91
          }
92
        end
93

    
94
        it { is_expected.to compile }
95
        it {
96
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
97
            content: 'ip version 4 tcp dport 333 accept',
98
          )
99
        }
100
      end
101

    
102
      describe 'only IPv6 UDP traffic' do
103
        let(:params) do
104
          {
105
            dport: 33,
106
            proto: 'udp6',
107
          }
108
        end
109

    
110
        it { is_expected.to compile }
111
        it {
112
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
113
            content: 'ip version 6 udp dport 33 accept',
114
          )
115
        }
116
      end
117

    
118
      describe 'with an IPv4 CIDR as daddr' do
119
        let(:params) do
120
          {
121
            daddr: '192.168.0.1/24',
122
            dport: 33,
123
            proto: 'tcp',
124
          }
125
        end
126

    
127
        it { is_expected.to compile }
128
        it {
129
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
130
            content: 'tcp dport 33 ip daddr 192.168.0.1/24 accept',
131
          )
132
        }
133
      end
134

    
135
      describe 'with an IPv6 address as daddr' do
136
        let(:params) do
137
          {
138
            daddr: '2001:1458::1',
139
          }
140
        end
141

    
142
        it { is_expected.to compile }
143
        it {
144
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
145
            content: 'ip6 daddr 2001:1458::1 accept',
146
          )
147
        }
148
      end
149

    
150
      describe 'with an IPv6 set as daddr, default set_type' do
151
        let(:params) do
152
          {
153
            daddr: '@my6_set',
154
          }
155
        end
156

    
157
        it { is_expected.to compile }
158
        it {
159
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
160
            content: 'ip6 daddr @my6_set accept',
161
          )
162
        }
163
      end
164

    
165
      describe 'with a IPv4 set as daddr' do
166
        let(:params) do
167
          {
168
            daddr: '@my4_set',
169
            set_type: 'ip',
170
          }
171
        end
172

    
173
        it { is_expected.to compile }
174
        it {
175
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
176
            content: 'ip daddr @my4_set accept',
177
          )
178
        }
179
      end
180

    
181
    end
182
  end
183
end