(t *testing.T)
| 626 | } |
| 627 | |
| 628 | func TestQueryDatabase_PermissionDenied(t *testing.T) { |
| 629 | databases := []map[string]any{ |
| 630 | makeDatabase("instances/prod-pg/databases/employee_db", "instances/prod-pg", "projects/hr-system", "POSTGRES", "ds-admin-1"), |
| 631 | } |
| 632 | handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 633 | if strings.Contains(r.URL.Path, "SQLService/Query") { |
| 634 | w.Header().Set("Content-Type", "application/json") |
| 635 | w.WriteHeader(http.StatusForbidden) |
| 636 | _ = json.NewEncoder(w).Encode(map[string]any{ |
| 637 | "message": "permission denied", |
| 638 | "code": "PERMISSION_DENIED", |
| 639 | }) |
| 640 | return |
| 641 | } |
| 642 | mockListDatabases(databases).ServeHTTP(w, r) |
| 643 | }) |
| 644 | s := newTestServerWithMock(t, handler) |
| 645 | |
| 646 | result, _, err := s.handleQueryDatabase(testContext(), nil, QueryInput{ |
| 647 | Database: "employee_db", |
| 648 | Statement: "SELECT * FROM users", |
| 649 | }) |
| 650 | require.NoError(t, err) |
| 651 | require.True(t, result.IsError) |
| 652 | |
| 653 | text := result.Content[0].(*mcpsdk.TextContent).Text |
| 654 | require.Contains(t, text, "permission denied") |
| 655 | } |
| 656 | |
| 657 | // --- Task 6 tests: masked values and timeout --- |
| 658 |
nothing calls this directly
no test coverage detected