(t *testing.T)
| 597 | } |
| 598 | |
| 599 | func TestQueryDatabase_QueryError(t *testing.T) { |
| 600 | databases := []map[string]any{ |
| 601 | makeDatabase("instances/prod-pg/databases/employee_db", "instances/prod-pg", "projects/hr-system", "POSTGRES", "ds-admin-1"), |
| 602 | } |
| 603 | handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 604 | if strings.Contains(r.URL.Path, "SQLService/Query") { |
| 605 | w.Header().Set("Content-Type", "application/json") |
| 606 | w.WriteHeader(http.StatusBadRequest) |
| 607 | _ = json.NewEncoder(w).Encode(map[string]any{ |
| 608 | "message": "syntax error at or near \"SELEC\"", |
| 609 | "code": "INVALID_ARGUMENT", |
| 610 | }) |
| 611 | return |
| 612 | } |
| 613 | mockListDatabases(databases).ServeHTTP(w, r) |
| 614 | }) |
| 615 | s := newTestServerWithMock(t, handler) |
| 616 | |
| 617 | result, _, err := s.handleQueryDatabase(testContext(), nil, QueryInput{ |
| 618 | Database: "employee_db", |
| 619 | Statement: "SELEC * FROM users", |
| 620 | }) |
| 621 | require.NoError(t, err) |
| 622 | require.True(t, result.IsError) |
| 623 | |
| 624 | text := result.Content[0].(*mcpsdk.TextContent).Text |
| 625 | require.Contains(t, text, "syntax error") |
| 626 | } |
| 627 | |
| 628 | func TestQueryDatabase_PermissionDenied(t *testing.T) { |
| 629 | databases := []map[string]any{ |
nothing calls this directly
no test coverage detected