(t *testing.T)
| 284 | } |
| 285 | |
| 286 | func TestScan_UpdateWithTautology(t *testing.T) { |
| 287 | scanner := NewScanner() |
| 288 | |
| 289 | // UPDATE users SET admin=1 WHERE 1=1 |
| 290 | updateStmt := &ast.UpdateStatement{ |
| 291 | TableName: "users", |
| 292 | Assignments: []ast.UpdateExpression{ |
| 293 | {Column: &ast.Identifier{Name: "admin"}, Value: &ast.LiteralValue{Value: "1", Type: "INTEGER"}}, |
| 294 | }, |
| 295 | Where: &ast.BinaryExpression{ |
| 296 | Left: &ast.LiteralValue{Value: "1", Type: "INTEGER"}, |
| 297 | Operator: "=", |
| 298 | Right: &ast.LiteralValue{Value: "1", Type: "INTEGER"}, |
| 299 | }, |
| 300 | } |
| 301 | |
| 302 | tree := &ast.AST{Statements: []ast.Statement{updateStmt}} |
| 303 | result := scanner.Scan(tree) |
| 304 | |
| 305 | if result.CriticalCount == 0 { |
| 306 | t.Error("expected critical finding for UPDATE with 1=1 tautology") |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | func TestScan_DeleteWithTautology(t *testing.T) { |
| 311 | scanner := NewScanner() |
nothing calls this directly
no test coverage detected