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

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package lsof
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestParseLsofWithoutFileDescriptors(t *testing.T) {
    16  	s := `p388
    17  g388
    18  R1
    19  cloginwindow
    20  u501
    21  f10
    22  au
    23  l 
    24  tIPv4
    25  G0x3;0x0
    26  d0x6949610f649739df
    27  o0t0
    28  PUDP
    29  n*:*
    30  `
    31  
    32  	processes, err := Parse(strings.NewReader(s))
    33  	require.NoError(t, err)
    34  	assert.Equal(t, 1, len(processes))
    35  
    36  	process := processes[0]
    37  	assert.Equal(t, "388", process.PID)
    38  	assert.Equal(t, "loginwindow", process.Command)
    39  	assert.Equal(t, "501", process.UID)
    40  }
    41  
    42  func TestParseLsofWithFileDescriptors(t *testing.T) {
    43  	s := `p37224
    44  g678
    45  R678
    46  cHyper Helper
    47  u501
    48  f24
    49  au
    50  l 
    51  tIPv4
    52  G0x10007;0x0
    53  d0x6949610a99d53797
    54  o0t0
    55  PTCP
    56  n10.184.10.188:64647->76.76.21.61:443
    57  TST=ESTABLISHED
    58  TQR=0
    59  TQS=0
    60  f25
    61  au
    62  l 
    63  tIPv4
    64  G0x10007;0x0
    65  d0x6949610a9a1bec8f
    66  o0t0
    67  PTCP
    68  n10.184.10.188:64645->76.76.21.241:443
    69  TST=ESTABLISHED
    70  TQR=0
    71  TQS=0
    72  p38266
    73  g38266
    74  R1
    75  cMail
    76  u501
    77  f68
    78  au
    79  l 
    80  tIPv4
    81  G0x10007;0x1
    82  d0x6949610a99a77797
    83  o0t0
    84  PTCP
    85  n10.184.10.188:59637->142.251.163.108:993
    86  TST=ESTABLISHED
    87  TQR=0
    88  TQS=0
    89  `
    90  
    91  	processes, err := Parse(strings.NewReader(s))
    92  	require.NoError(t, err)
    93  
    94  	assert.Equal(t, 2, len(processes))
    95  
    96  	process := processes[0]
    97  	assert.Equal(t, "37224", process.PID)
    98  	assert.Equal(t, "Hyper Helper", process.Command)
    99  	assert.Equal(t, "501", process.UID)
   100  
   101  	assert.Equal(t, 2, len(process.FileDescriptors))
   102  
   103  	fd := process.FileDescriptors[0]
   104  	assert.Equal(t, "24", fd.FileDescriptor)
   105  	assert.Equal(t, FileTypeIPv4, fd.Type)
   106  	assert.Equal(t, "10.184.10.188:64647->76.76.21.61:443", fd.Name)
   107  
   108  	fd = process.FileDescriptors[1]
   109  	assert.Equal(t, "25", fd.FileDescriptor)
   110  	assert.Equal(t, FileTypeIPv4, fd.Type)
   111  	assert.Equal(t, "10.184.10.188:64645->76.76.21.241:443", fd.Name)
   112  }
   113  
   114  func TestParseEmpty(t *testing.T) {
   115  	processes, err := Parse(strings.NewReader(""))
   116  	if err != nil {
   117  		t.Fatal(err)
   118  	}
   119  	if len(processes) != 0 {
   120  		t.Fatal("Failed parsing empty")
   121  	}
   122  }