Projet

Général

Profil

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

root / spec / defines / simplerule_spec.rb @ 6793d286

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

1 83382bb5 Nacho Barrientos
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 3a52fb41 Nacho Barrientos
            order: '50',
18 83382bb5 Nacho Barrientos
          )
19
        }
20
      end
21
22 d38aab5b Nacho Barrientos
      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 83382bb5 Nacho Barrientos
      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 d43ced4d Nacho Barrientos
            counter: true,
39 83382bb5 Nacho Barrientos
            dport: 333,
40
            proto: 'udp',
41
            chain: 'default_out',
42 aaa37172 Nacho Barrientos
            daddr: '2001:1458::/32',
43 83382bb5 Nacho Barrientos
          }
44
        end
45
46
        it { is_expected.to compile }
47
        it {
48
          is_expected.to contain_nftables__rule('default_out-my_big_rule').with(
49 6793d286 Nacho Barrientos
            content: 'udp dport {333} ip6 daddr 2001:1458::/32 counter accept comment "this is my rule"',
50 3a52fb41 Nacho Barrientos
            order: '50',
51
          )
52
        }
53
      end
54
55
      describe 'port range' do
56
        let(:params) do
57
          {
58
            dport: '333-334',
59
            proto: 'tcp',
60
          }
61
        end
62
63
        it { is_expected.to compile }
64
        it {
65
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
66 6793d286 Nacho Barrientos
            content: 'tcp dport {333-334} accept',
67 3a52fb41 Nacho Barrientos
          )
68
        }
69
      end
70
71
      describe 'port array' do
72
        let(:params) do
73
          {
74
            dport: [333, 335],
75
            proto: 'tcp',
76
          }
77
        end
78
79
        it { is_expected.to compile }
80
        it {
81
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
82
            content: 'tcp dport {333, 335} accept',
83 83382bb5 Nacho Barrientos
          )
84
        }
85
      end
86 316bc3f8 Nacho Barrientos
87
      describe 'only IPv4 TCP traffic' do
88
        let(:params) do
89
          {
90
            dport: 333,
91
            proto: 'tcp4',
92
          }
93
        end
94
95
        it { is_expected.to compile }
96
        it {
97
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
98 6793d286 Nacho Barrientos
            content: 'ip version 4 tcp dport {333} accept',
99 316bc3f8 Nacho Barrientos
          )
100
        }
101
      end
102
103
      describe 'only IPv6 UDP traffic' do
104
        let(:params) do
105
          {
106
            dport: 33,
107
            proto: 'udp6',
108
          }
109
        end
110
111
        it { is_expected.to compile }
112
        it {
113
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
114 6793d286 Nacho Barrientos
            content: 'ip version 6 udp dport {33} accept',
115 316bc3f8 Nacho Barrientos
          )
116
        }
117
      end
118 aaa37172 Nacho Barrientos
119
      describe 'with an IPv4 CIDR as daddr' do
120
        let(:params) do
121
          {
122
            daddr: '192.168.0.1/24',
123
            dport: 33,
124
            proto: 'tcp',
125
          }
126
        end
127
128
        it { is_expected.to compile }
129
        it {
130
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
131 6793d286 Nacho Barrientos
            content: 'tcp dport {33} ip daddr 192.168.0.1/24 accept',
132 aaa37172 Nacho Barrientos
          )
133
        }
134
      end
135
136
      describe 'with an IPv6 address as daddr' do
137
        let(:params) do
138
          {
139
            daddr: '2001:1458::1',
140
          }
141
        end
142
143
        it { is_expected.to compile }
144
        it {
145
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
146
            content: 'ip6 daddr 2001:1458::1 accept',
147
          )
148
        }
149
      end
150
151
      describe 'with an IPv6 set as daddr, default set_type' do
152
        let(:params) do
153
          {
154
            daddr: '@my6_set',
155
          }
156
        end
157
158
        it { is_expected.to compile }
159
        it {
160
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
161
            content: 'ip6 daddr @my6_set accept',
162
          )
163
        }
164
      end
165
166
      describe 'with a IPv4 set as daddr' do
167
        let(:params) do
168
          {
169
            daddr: '@my4_set',
170
            set_type: 'ip',
171
          }
172
        end
173
174
        it { is_expected.to compile }
175
        it {
176
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
177
            content: 'ip daddr @my4_set accept',
178
          )
179
        }
180
      end
181
182 d43ced4d Nacho Barrientos
      describe 'with counter enabled' do
183
        let(:params) do
184
          {
185
            counter: true,
186
          }
187
        end
188
189
        it { is_expected.to compile }
190
        it {
191
          is_expected.to contain_nftables__rule('default_in-my_default_rule_name').with(
192
            content: 'counter accept',
193
          )
194
        }
195
      end
196 83382bb5 Nacho Barrientos
    end
197
  end
198
end