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 }