(reader *bufio.Reader)
| 407 | } |
| 408 | |
| 409 | func readRedisCommand(reader *bufio.Reader) ([]string, error) { |
| 410 | line, errRead := reader.ReadString('\n') |
| 411 | if errRead != nil { |
| 412 | return nil, errRead |
| 413 | } |
| 414 | line = strings.TrimSpace(line) |
| 415 | if !strings.HasPrefix(line, "*") { |
| 416 | return nil, fmt.Errorf("expected array, got %q", line) |
| 417 | } |
| 418 | count, errCount := strconv.Atoi(strings.TrimPrefix(line, "*")) |
| 419 | if errCount != nil { |
| 420 | return nil, errCount |
| 421 | } |
| 422 | args := make([]string, 0, count) |
| 423 | for i := 0; i < count; i++ { |
| 424 | bulkLine, errBulk := reader.ReadString('\n') |
| 425 | if errBulk != nil { |
| 426 | return nil, errBulk |
| 427 | } |
| 428 | bulkLine = strings.TrimSpace(bulkLine) |
| 429 | if !strings.HasPrefix(bulkLine, "$") { |
| 430 | return nil, fmt.Errorf("expected bulk string, got %q", bulkLine) |
| 431 | } |
| 432 | size, errSize := strconv.Atoi(strings.TrimPrefix(bulkLine, "$")) |
| 433 | if errSize != nil { |
| 434 | return nil, errSize |
| 435 | } |
| 436 | payload := make([]byte, size+2) |
| 437 | if _, errFull := io.ReadFull(reader, payload); errFull != nil { |
| 438 | return nil, errFull |
| 439 | } |
| 440 | args = append(args, string(payload[:size])) |
| 441 | } |
| 442 | return args, nil |
| 443 | } |
| 444 | |
| 445 | func TestModelsRequestSerializationCarriesCredentials(t *testing.T) { |
| 446 | req := modelsRequest{ |
no outgoing calls
no test coverage detected