go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/iptables_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package resources
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestParseStat(t *testing.T) {
    13  	// not opt
    14  	t.Run("parsing conf lines", func(t *testing.T) {
    15  		line := []string{
    16  			"Chain OUTPUT (policy DROP 227 packets, 12904 bytes)",
    17  			"num      pkts      bytes target     prot opt in     out     source               destination",
    18  			"2           0        0 ACCEPT     tcp      *      *       ::/0                 ::/0                 state NEW,ESTABLISHED",
    19  		}
    20  		expected := []Stat{
    21  			{
    22  				LineNumber:  2,
    23  				Packets:     0,
    24  				Bytes:       0,
    25  				Target:      "ACCEPT",
    26  				Protocol:    "tcp",
    27  				Opt:         "  ",
    28  				Input:       "*",
    29  				Output:      "*",
    30  				Source:      "::/0",
    31  				Destination: "::/0",
    32  				Options:     "state NEW,ESTABLISHED",
    33  			},
    34  		}
    35  		result, err := ParseStat(line, true)
    36  		require.NoError(t, err)
    37  		require.Equal(t, expected, result)
    38  	})
    39  	// opt
    40  	t.Run("parsing conf lines", func(t *testing.T) {
    41  		line := []string{
    42  			"Chain OUTPUT (policy DROP 227 packets, 12904 bytes)",
    43  			"num      pkts      bytes target     prot opt in     out     source               destination",
    44  			"2           0        0 ACCEPT     tcp    opt  *      *       ::/0                 ::/0                 state NEW,ESTABLISHED",
    45  		}
    46  		expected := []Stat{
    47  			{
    48  				LineNumber:  2,
    49  				Packets:     0,
    50  				Bytes:       0,
    51  				Target:      "ACCEPT",
    52  				Protocol:    "tcp",
    53  				Opt:         "opt",
    54  				Input:       "*",
    55  				Output:      "*",
    56  				Source:      "::/0",
    57  				Destination: "::/0",
    58  				Options:     "state NEW,ESTABLISHED",
    59  			},
    60  		}
    61  		result, err := ParseStat(line, true)
    62  		require.NoError(t, err)
    63  		require.Equal(t, expected, result)
    64  	})
    65  }