github.com/DelineaXPM/dsv-cli@v1.40.6/tests/e2e/cmd_siem_test.go (about)

     1  //go:build endtoend
     2  // +build endtoend
     3  
     4  package e2e
     5  
     6  import (
     7  	"fmt"
     8  	"runtime"
     9  	"testing"
    10  )
    11  
    12  func TestSIEM_CRUD(t *testing.T) {
    13  	if runtime.GOOS == "windows" {
    14  		t.Skip("Sorry, interactive End-to-End tests cannot be executed on Windows.")
    15  	}
    16  	e := newEnv()
    17  
    18  	var (
    19  		siemName          = makeSIEMName()
    20  		siemHost          = "127.0.0.1"
    21  		siemPort          = "3131"
    22  		siemAuth          = "123"
    23  		siemPool          = ""
    24  		siemAuthType      = "token"
    25  		siemLoggingFormat = "rfc5424"
    26  		siemProtocol      = "udp"
    27  		siemSendToEngine  = "false"
    28  		siemType          = "syslog"
    29  	)
    30  
    31  	cmd := []string{
    32  		"siem", "create",
    33  		"--auth-type=password",
    34  		fmt.Sprintf("--auth-username=%s", e.username),
    35  		fmt.Sprintf("--auth-password=%s", e.password),
    36  		fmt.Sprintf("--tenant=%s", e.tenant),
    37  		fmt.Sprintf("--domain=%s", e.domain),
    38  	}
    39  
    40  	runFlow(t, cmd, func(c console) {
    41  		c.ExpectString("Name of SIEM endpoint")
    42  		c.SendLine(siemName)
    43  		c.ExpectString("Select SIEM type")
    44  		c.SendKeyEnter()
    45  		c.ExpectString("Select protocol for syslog SIEM type")
    46  		c.SendKeyArrowDown()
    47  		c.SendKeyArrowDown()
    48  		c.SendKeyEnter()
    49  		c.ExpectString("Host")
    50  		c.SendLine(siemHost)
    51  		c.ExpectString("Port")
    52  		c.SendLine(siemPort)
    53  		c.ExpectString("Select authentication method")
    54  		c.SendKeyEnter()
    55  		c.ExpectString("Authentication")
    56  		c.SendLine(siemAuth)
    57  		c.ExpectString("Select logging format")
    58  		c.SendKeyEnter()
    59  		c.ExpectString("Route through DSV engine")
    60  		c.SendKeyEnter()
    61  
    62  		c.ExpectEOF()
    63  	})
    64  
    65  	output := runWithProfile(t, fmt.Sprintf("siem read %s", siemName))
    66  	requireContains(t, output, siemName)
    67  	requireContains(t, output, siemAuthType)
    68  	requireContains(t, output, siemHost)
    69  	requireContains(t, output, siemPort)
    70  	requireContains(t, output, siemAuth)
    71  	requireContains(t, output, siemLoggingFormat)
    72  	requireContains(t, output, siemProtocol)
    73  	requireContains(t, output, siemSendToEngine)
    74  	requireContains(t, output, siemType)
    75  	requireContains(t, output, siemPool)
    76  
    77  	cmd = []string{
    78  		"siem", "update", siemName,
    79  		"--auth-type=password",
    80  		fmt.Sprintf("--auth-username=%s", e.username),
    81  		fmt.Sprintf("--auth-password=%s", e.password),
    82  		fmt.Sprintf("--tenant=%s", e.tenant),
    83  		fmt.Sprintf("--domain=%s", e.domain),
    84  	}
    85  
    86  	// Update port in SIEM config.
    87  	siemPort = "3030"
    88  
    89  	runFlow(t, cmd, func(c console) {
    90  		c.ExpectString("Select SIEM type")
    91  		c.SendKeyEnter()
    92  		c.ExpectString("Select protocol for syslog SIEM type")
    93  		c.SendKeyArrowDown()
    94  		c.SendKeyArrowDown()
    95  		c.SendKeyEnter()
    96  		c.ExpectString("Host")
    97  		c.SendLine(siemHost)
    98  		c.ExpectString("Port")
    99  		c.SendLine(siemPort)
   100  		c.ExpectString("Select authentication method")
   101  		c.SendKeyEnter()
   102  		c.ExpectString("Authentication")
   103  		c.SendLine(siemAuth)
   104  		c.ExpectString("Select logging format")
   105  		c.SendKeyEnter()
   106  		c.ExpectString("Route through DSV engine")
   107  		c.SendKeyEnter()
   108  
   109  		c.ExpectEOF()
   110  	})
   111  
   112  	output = runWithProfile(t, fmt.Sprintf("siem read %s", siemName))
   113  	requireContains(t, output, siemName)
   114  	requireContains(t, output, siemAuthType)
   115  	requireContains(t, output, siemHost)
   116  	requireContains(t, output, siemPort)
   117  	requireContains(t, output, siemAuth)
   118  	requireContains(t, output, siemLoggingFormat)
   119  	requireContains(t, output, siemProtocol)
   120  	requireContains(t, output, siemSendToEngine)
   121  	requireContains(t, output, siemType)
   122  	requireContains(t, output, siemPool)
   123  
   124  	output = runWithProfile(t, fmt.Sprintf("siem delete %s", siemName))
   125  	if output != "" {
   126  		t.Fatalf("Unexpected output on delete: \n%s\n", output)
   127  	}
   128  }