mirror of
https://github.com/gravitational/teleport
synced 2024-10-18 16:24:03 +00:00
refactor(player): normalize queries line breaks and spacing (#44299)
This commit is contained in:
parent
a4570813ee
commit
ba68436058
|
@ -98,7 +98,18 @@ func (p *PostgresTranslator) TranslateEvent(evt events.AuditEvent) *events.Sessi
|
|||
const lineBreak = "\r\n"
|
||||
|
||||
func (p *PostgresTranslator) generateCommandPrint(metadata events.DatabaseMetadata, command string) string {
|
||||
return lineBreak + fmt.Sprintf("%s=> %s", metadata.DatabaseName, command) + lineBreak
|
||||
lead := metadata.DatabaseName + "=> "
|
||||
leadSpacing := strings.Repeat(" ", len(lead))
|
||||
|
||||
var sb strings.Builder
|
||||
commandLines := strings.Split(command, "\n")
|
||||
sb.WriteString(lead + strings.TrimSpace(commandLines[0]) + lineBreak)
|
||||
|
||||
for i := 1; i < len(commandLines); i++ {
|
||||
sb.WriteString(leadSpacing + strings.TrimSpace(commandLines[i]) + lineBreak)
|
||||
}
|
||||
|
||||
return lineBreak + sb.String()
|
||||
}
|
||||
|
||||
func (p *PostgresTranslator) generatePreparedStatementPrint(metadata events.Metadata, databaseMetadata events.DatabaseMetadata, portalName string) *events.SessionPrint {
|
||||
|
|
|
@ -344,6 +344,67 @@ func TestPostgresRecording(t *testing.T) {
|
|||
nil,
|
||||
},
|
||||
},
|
||||
"queries with line spacing": {
|
||||
events: []events.AuditEvent{
|
||||
&events.DatabaseSessionQuery{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
DatabaseQuery: "SELECT \n1;",
|
||||
},
|
||||
&events.DatabaseSessionCommandResult{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
Status: events.Status{Success: true},
|
||||
AffectedRecords: 1,
|
||||
},
|
||||
&events.DatabaseSessionQuery{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
DatabaseQuery: "SELECT *\nfrom events\nlimit 1;",
|
||||
},
|
||||
&events.DatabaseSessionCommandResult{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
Status: events.Status{Success: true},
|
||||
AffectedRecords: 1,
|
||||
},
|
||||
&events.DatabaseSessionQuery{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
DatabaseQuery: "SELECT *\r\nfrom events\r\nlimit 1;",
|
||||
},
|
||||
&events.DatabaseSessionCommandResult{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
Status: events.Status{Success: true},
|
||||
AffectedRecords: 1,
|
||||
},
|
||||
&events.DatabaseSessionQuery{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
DatabaseQuery: "SELECT *\r\nfrom events\r\nlimit 1;",
|
||||
},
|
||||
&events.DatabaseSessionCommandResult{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
Status: events.Status{Success: true},
|
||||
AffectedRecords: 1,
|
||||
},
|
||||
&events.DatabaseSessionQuery{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
DatabaseQuery: "SELECT *\t\r\n from events\t\r\n limit 1;",
|
||||
},
|
||||
&events.DatabaseSessionCommandResult{
|
||||
DatabaseMetadata: events.DatabaseMetadata{DatabaseName: "test"},
|
||||
Status: events.Status{Success: true},
|
||||
AffectedRecords: 1,
|
||||
},
|
||||
},
|
||||
expectedPrints: [][]byte{
|
||||
[]byte("\r\ntest=> SELECT\r\n 1;\r\n"),
|
||||
[]byte("SUCCESS\r\n(1 row affected)\r\n"),
|
||||
[]byte("\r\ntest=> SELECT *\r\n from events\r\n limit 1;\r\n"),
|
||||
[]byte("SUCCESS\r\n(1 row affected)\r\n"),
|
||||
[]byte("\r\ntest=> SELECT *\r\n from events\r\n limit 1;\r\n"),
|
||||
[]byte("SUCCESS\r\n(1 row affected)\r\n"),
|
||||
[]byte("\r\ntest=> SELECT *\r\n from events\r\n limit 1;\r\n"),
|
||||
[]byte("SUCCESS\r\n(1 row affected)\r\n"),
|
||||
[]byte("\r\ntest=> SELECT *\r\n from events\r\n limit 1;\r\n"),
|
||||
[]byte("SUCCESS\r\n(1 row affected)\r\n"),
|
||||
},
|
||||
},
|
||||
} {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
translator := NewPostgresTranslator()
|
||||
|
|
Loading…
Reference in a new issue