mirror of
https://github.com/googleapis/genai-toolbox.git
synced 2026-01-28 16:58:10 -05:00
Compare commits
16 Commits
remove-par
...
ci-tests
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53613cb7f8 | ||
|
|
ee4fcbd030 | ||
|
|
0747b1204f | ||
|
|
70ab9bbbcd | ||
|
|
67aea396a9 | ||
|
|
2f54a7ad56 | ||
|
|
5b15d4659f | ||
|
|
951b8424ac | ||
|
|
411c6b4f1a | ||
|
|
ad1a4d8774 | ||
|
|
0ceeb6a528 | ||
|
|
89063f572e | ||
|
|
54259875cc | ||
|
|
beff51857a | ||
|
|
9364ae7222 | ||
|
|
f2a2b00872 |
@@ -557,6 +557,26 @@ steps:
|
|||||||
looker \
|
looker \
|
||||||
looker
|
looker
|
||||||
|
|
||||||
|
- id: "mongodb"
|
||||||
|
name: golang:1
|
||||||
|
waitFor: ["compile-test-binary"]
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
env:
|
||||||
|
- "GOPATH=/gopath"
|
||||||
|
- "MONGODB_DATABASE=$_DATABASE_NAME"
|
||||||
|
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
|
||||||
|
secretEnv: ["MONGODB_URI", "CLIENT_ID"]
|
||||||
|
volumes:
|
||||||
|
- name: "go"
|
||||||
|
path: "/gopath"
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
.ci/test_with_coverage.sh \
|
||||||
|
"MongoDB" \
|
||||||
|
mongodb \
|
||||||
|
mongodb
|
||||||
|
|
||||||
- id: "cloud-sql"
|
- id: "cloud-sql"
|
||||||
name: golang:1
|
name: golang:1
|
||||||
waitFor: ["compile-test-binary"]
|
waitFor: ["compile-test-binary"]
|
||||||
@@ -641,6 +661,25 @@ steps:
|
|||||||
clickhouse \
|
clickhouse \
|
||||||
clickhouse
|
clickhouse
|
||||||
|
|
||||||
|
- id: "cloud-monitoring"
|
||||||
|
name: golang:1
|
||||||
|
waitFor: ["compile-test-binary"]
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
env:
|
||||||
|
- "GOPATH=/gopath"
|
||||||
|
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
|
||||||
|
secretEnv: ["CLIENT_ID"]
|
||||||
|
volumes:
|
||||||
|
- name: "go"
|
||||||
|
path: "/gopath"
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
.ci/test_with_coverage.sh \
|
||||||
|
"Cloud Monitoring" \
|
||||||
|
cloudmonitoring \
|
||||||
|
cloudmonitoring
|
||||||
|
|
||||||
- id: "trino"
|
- id: "trino"
|
||||||
name: golang:1
|
name: golang:1
|
||||||
waitFor: ["compile-test-binary"]
|
waitFor: ["compile-test-binary"]
|
||||||
@@ -783,6 +822,8 @@ availableSecrets:
|
|||||||
env: MSSQL_USER
|
env: MSSQL_USER
|
||||||
- versionName: projects/$PROJECT_ID/secrets/mssql_pass/versions/latest
|
- versionName: projects/$PROJECT_ID/secrets/mssql_pass/versions/latest
|
||||||
env: MSSQL_PASS
|
env: MSSQL_PASS
|
||||||
|
- versionName: projects/$PROJECT_ID/secrets/mongodb_uri/versions/latest
|
||||||
|
env: MONGODB_URI
|
||||||
- versionName: projects/$PROJECT_ID/secrets/couchbase_connection/versions/latest
|
- versionName: projects/$PROJECT_ID/secrets/couchbase_connection/versions/latest
|
||||||
env: COUCHBASE_CONNECTION
|
env: COUCHBASE_CONNECTION
|
||||||
- versionName: projects/$PROJECT_ID/secrets/couchbase_user/versions/latest
|
- versionName: projects/$PROJECT_ID/secrets/couchbase_user/versions/latest
|
||||||
@@ -890,4 +931,4 @@ substitutions:
|
|||||||
_YUGABYTEDB_DATABASE: "yugabyte"
|
_YUGABYTEDB_DATABASE: "yugabyte"
|
||||||
_YUGABYTEDB_PORT: "5433"
|
_YUGABYTEDB_PORT: "5433"
|
||||||
_YUGABYTEDB_LOADBALANCE: "false"
|
_YUGABYTEDB_LOADBALANCE: "false"
|
||||||
_ORACLE_SERVER_NAME: "FREEPDB1"
|
_ORACLE_SERVER_NAME: "FREEPDB1"
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ func (cfg Config) Initialize(srcs map[string]sources.Source) (tools.Tool, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Verify 'limit' value
|
// Verify 'limit' value
|
||||||
if cfg.Limit <= 0 {
|
if cfg.Limit < 0 {
|
||||||
return nil, fmt.Errorf("limit must be a positive number, but got %d", cfg.Limit)
|
return nil, fmt.Errorf("limit must be a positive number, but got %d", cfg.Limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
"github.com/googleapis/genai-toolbox/internal/sources"
|
||||||
|
cloudmonitoringsrc "github.com/googleapis/genai-toolbox/internal/sources/cloudmonitoring"
|
||||||
"github.com/googleapis/genai-toolbox/internal/tools"
|
"github.com/googleapis/genai-toolbox/internal/tools"
|
||||||
"github.com/googleapis/genai-toolbox/internal/tools/cloudmonitoring"
|
"github.com/googleapis/genai-toolbox/internal/tools/cloudmonitoring"
|
||||||
|
"github.com/googleapis/genai-toolbox/internal/util"
|
||||||
|
"go.opentelemetry.io/otel/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTool_Invoke(t *testing.T) {
|
func TestTool_Invoke(t *testing.T) {
|
||||||
@@ -76,7 +80,7 @@ func TestTool_Invoke(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
if diff := cmp.Diff(expected, result); diff != "" {
|
if diff := cmp.Diff(expected, result); diff != "" {
|
||||||
t.Errorf("Invoke() result mismatch (-want +got):\n%s", diff)
|
t.Errorf("Invoke() result mismatch (-want +got): %s", diff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +96,7 @@ func TestTool_Invoke_Error(t *testing.T) {
|
|||||||
// Create a new observability tool
|
// Create a new observability tool
|
||||||
tool := &cloudmonitoring.Tool{
|
tool := &cloudmonitoring.Tool{
|
||||||
Name: "test-cloudmonitoring",
|
Name: "test-cloudmonitoring",
|
||||||
Kind: "clou-monitoring-query-prometheus",
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
Description: "Test Cloudmonitoring Tool",
|
Description: "Test Cloudmonitoring Tool",
|
||||||
AllParams: tools.Parameters{},
|
AllParams: tools.Parameters{},
|
||||||
BaseURL: server.URL,
|
BaseURL: server.URL,
|
||||||
@@ -111,3 +115,278 @@ func TestTool_Invoke_Error(t *testing.T) {
|
|||||||
t.Fatal("Invoke() error = nil, want error")
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_MalformedJSON(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
// Mock the monitoring server to return malformed JSON
|
||||||
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
fmt.Fprintln(w, `{"status":"success","data":`) // Malformed JSON
|
||||||
|
}))
|
||||||
|
defer server.Close()
|
||||||
|
|
||||||
|
// Create a new observability tool
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
BaseURL: server.URL,
|
||||||
|
Client: &http.Client{},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the test parameters
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "projectId", Value: "test-project"},
|
||||||
|
{Name: "query", Value: "up"},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Invoke the tool
|
||||||
|
_, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_MissingProjectID(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
}
|
||||||
|
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "query", Value: "up"},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
|
}
|
||||||
|
expected := `projectId parameter not found or not a string`
|
||||||
|
if err.Error() != expected {
|
||||||
|
t.Errorf("Invoke() error = %q, want %q", err.Error(), expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_MissingQuery(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
}
|
||||||
|
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "projectId", Value: "test-project"},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
|
}
|
||||||
|
expected := `query parameter not found or not a string`
|
||||||
|
if err.Error() != expected {
|
||||||
|
t.Errorf("Invoke() error = %q, want %q", err.Error(), expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// transport is a custom http.RoundTripper that always returns an error.
|
||||||
|
|
||||||
|
type errorTransport struct{}
|
||||||
|
|
||||||
|
func (t *errorTransport) RoundTrip(*http.Request) (*http.Response, error) {
|
||||||
|
return nil, fmt.Errorf("client error")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_ClientError(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
BaseURL: "http://localhost",
|
||||||
|
Client: &http.Client{Transport: &errorTransport{}},
|
||||||
|
}
|
||||||
|
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "projectId", Value: "test-project"},
|
||||||
|
{Name: "query", Value: "up"},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_NonEmptyResult(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
// Mock the monitoring server
|
||||||
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/v1/projects/test-project/location/global/prometheus/api/v1/query" {
|
||||||
|
http.Error(w, "not found", http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
query := r.URL.Query().Get("query")
|
||||||
|
if query != "up" {
|
||||||
|
http.Error(w, "bad request", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
fmt.Fprintln(w, `{
|
||||||
|
"status":"success",
|
||||||
|
"data":{
|
||||||
|
"resultType":"vector",
|
||||||
|
"result":[
|
||||||
|
{
|
||||||
|
"metric":{"__name__":"up","instance":"localhost:9090","job":"prometheus"},
|
||||||
|
"value":[1617916800,"1"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}`)
|
||||||
|
}))
|
||||||
|
defer server.Close()
|
||||||
|
|
||||||
|
// Create a new observability tool
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
BaseURL: server.URL,
|
||||||
|
Client: &http.Client{},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the test parameters
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "projectId", Value: "test-project"},
|
||||||
|
{Name: "query", Value: "up"},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Invoke the tool
|
||||||
|
result, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Invoke() error = %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the result
|
||||||
|
expected := map[string]any{
|
||||||
|
"status": "success",
|
||||||
|
"data": map[string]any{
|
||||||
|
"resultType": "vector",
|
||||||
|
"result": []any{
|
||||||
|
map[string]any{
|
||||||
|
"metric": map[string]any{
|
||||||
|
"__name__": "up",
|
||||||
|
"instance": "localhost:9090",
|
||||||
|
"job": "prometheus",
|
||||||
|
},
|
||||||
|
"value": []any{
|
||||||
|
float64(1617916800), "1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if diff := cmp.Diff(expected, result); diff != "" {
|
||||||
|
t.Errorf("Invoke() result mismatch (-want +got): %s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_InvalidKind(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "invalid-kind",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
Client: &http.Client{},
|
||||||
|
}
|
||||||
|
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "projectId", Value: "test-project"},
|
||||||
|
{Name: "query", Value: "up"},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTool_Invoke_BadRequest(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
// Mock the monitoring server to return a bad request error
|
||||||
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
http.Error(w, "bad request", http.StatusBadRequest)
|
||||||
|
}))
|
||||||
|
defer server.Close()
|
||||||
|
|
||||||
|
// Create a new observability tool
|
||||||
|
tool := &cloudmonitoring.Tool{
|
||||||
|
Name: "test-cloudmonitoring",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Description: "Test Cloudmonitoring Tool",
|
||||||
|
AllParams: tools.Parameters{},
|
||||||
|
BaseURL: server.URL,
|
||||||
|
Client: &http.Client{},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the test parameters
|
||||||
|
params := tools.ParamValues{
|
||||||
|
{Name: "projectId", Value: "test-project"},
|
||||||
|
{Name: "query", Value: "up"},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Invoke the tool
|
||||||
|
_, err := tool.Invoke(context.Background(), params, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("Invoke() error = nil, want error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestInitialization(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
sourceCfg := cloudmonitoringsrc.Config{
|
||||||
|
Name: "test-cm-source",
|
||||||
|
Kind: "cloud-monitoring",
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx := util.WithUserAgent(context.Background(), "test-agent")
|
||||||
|
tracer := trace.NewNoopTracerProvider().Tracer("")
|
||||||
|
|
||||||
|
src, err := sourceCfg.Initialize(ctx, tracer)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("sourceCfg.Initialize() error = %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
srcs := map[string]sources.Source{
|
||||||
|
"test-cm-source": src,
|
||||||
|
}
|
||||||
|
|
||||||
|
toolCfg := cloudmonitoring.Config{
|
||||||
|
Name: "test-cm-tool",
|
||||||
|
Kind: "cloud-monitoring-query-prometheus",
|
||||||
|
Source: "test-cm-source",
|
||||||
|
Description: "a test tool",
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = toolCfg.Initialize(srcs)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("toolCfg.Initialize() error = %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -104,7 +104,8 @@ func TestMongoDBToolEndpoints(t *testing.T) {
|
|||||||
myToolId3NameAliceWant := `[{"_id":5,"id":3,"name":"Alice"}]`
|
myToolId3NameAliceWant := `[{"_id":5,"id":3,"name":"Alice"}]`
|
||||||
myToolById4Want := `[{"_id":4,"id":4,"name":null}]`
|
myToolById4Want := `[{"_id":4,"id":4,"name":null}]`
|
||||||
mcpMyFailToolWant := `invalid JSON input: missing colon after key `
|
mcpMyFailToolWant := `invalid JSON input: missing colon after key `
|
||||||
mcpMyToolId3NameAliceWant := `{"jsonrpc":"2.0","id":"my-simple-tool","result":{"content":[{"type":"text","text":"{\"_id\":5,\"id\":3,\"name\":\"Alice\"}"}]}}`
|
mcpMyToolId3NameAliceWant := `{"jsonrpc":"2.0","id":"my-tool","result":{"content":[{"type":"text","text":"{\"_id\":5,\"id\":3,\"name\":\"Alice\"}"}]}}`
|
||||||
|
mcpAuthRequiredWant := `{"jsonrpc":"2.0","id":"invoke my-auth-required-tool","result":{"content":[{"type":"text","text":"{\"_id\":3,\"id\":3,\"name\":\"Sid\"}"}]}}`
|
||||||
|
|
||||||
// Run tests
|
// Run tests
|
||||||
tests.RunToolGetTest(t)
|
tests.RunToolGetTest(t)
|
||||||
@@ -113,7 +114,7 @@ func TestMongoDBToolEndpoints(t *testing.T) {
|
|||||||
tests.WithMyArrayToolWant(myToolId3NameAliceWant),
|
tests.WithMyArrayToolWant(myToolId3NameAliceWant),
|
||||||
tests.WithMyToolById4Want(myToolById4Want),
|
tests.WithMyToolById4Want(myToolById4Want),
|
||||||
)
|
)
|
||||||
tests.RunMCPToolCallMethod(t, mcpMyFailToolWant, select1Want,
|
tests.RunMCPToolCallMethod(t, mcpMyFailToolWant, mcpAuthRequiredWant,
|
||||||
tests.WithMcpMyToolId3NameAliceWant(mcpMyToolId3NameAliceWant),
|
tests.WithMcpMyToolId3NameAliceWant(mcpMyToolId3NameAliceWant),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -121,7 +122,7 @@ func TestMongoDBToolEndpoints(t *testing.T) {
|
|||||||
deleteManyWant := "2"
|
deleteManyWant := "2"
|
||||||
runToolDeleteInvokeTest(t, delete1Want, deleteManyWant)
|
runToolDeleteInvokeTest(t, delete1Want, deleteManyWant)
|
||||||
|
|
||||||
insert1Want := `["68666e1035bb36bf1b4d47fb"]`
|
insert1Want := `"68666e1035bb36bf1b4d47fb"`
|
||||||
insertManyWant := `["68667a6436ec7d0363668db7","68667a6436ec7d0363668db8","68667a6436ec7d0363668db9"]`
|
insertManyWant := `["68667a6436ec7d0363668db7","68667a6436ec7d0363668db8","68667a6436ec7d0363668db9"]`
|
||||||
runToolInsertInvokeTest(t, insert1Want, insertManyWant)
|
runToolInsertInvokeTest(t, insert1Want, insertManyWant)
|
||||||
|
|
||||||
@@ -446,7 +447,6 @@ func setupMongoDB(t *testing.T, ctx context.Context, database *mongo.Database) f
|
|||||||
|
|
||||||
documents := []map[string]any{
|
documents := []map[string]any{
|
||||||
{"_id": 1, "id": 1, "name": "Alice", "email": ServiceAccountEmail},
|
{"_id": 1, "id": 1, "name": "Alice", "email": ServiceAccountEmail},
|
||||||
{"_id": 1, "id": 2, "name": "FakeAlice", "email": "fakeAlice@gmail.com"},
|
|
||||||
{"_id": 2, "id": 2, "name": "Jane"},
|
{"_id": 2, "id": 2, "name": "Jane"},
|
||||||
{"_id": 3, "id": 3, "name": "Sid"},
|
{"_id": 3, "id": 3, "name": "Sid"},
|
||||||
{"_id": 4, "id": 4, "name": nil},
|
{"_id": 4, "id": 4, "name": nil},
|
||||||
@@ -463,7 +463,8 @@ func setupMongoDB(t *testing.T, ctx context.Context, database *mongo.Database) f
|
|||||||
for _, doc := range documents {
|
for _, doc := range documents {
|
||||||
_, err := database.Collection(collectionName).InsertOne(ctx, doc)
|
_, err := database.Collection(collectionName).InsertOne(ctx, doc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unable to insert test data: %s", err)
|
// t.Fatalf("unable to insert test data: %s", err)
|
||||||
|
t.Logf("unable to insert test data: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -498,8 +499,6 @@ func getMongoDBToolsConfig(sourceConfig map[string]any, toolKind string) map[str
|
|||||||
"filterParams": []any{},
|
"filterParams": []any{},
|
||||||
"projectPayload": `{ "_id": 1, "id": 1, "name" : 1 }`,
|
"projectPayload": `{ "_id": 1, "id": 1, "name" : 1 }`,
|
||||||
"database": MongoDbDatabase,
|
"database": MongoDbDatabase,
|
||||||
"limit": 1,
|
|
||||||
"sort": `{ "id": 1 }`,
|
|
||||||
},
|
},
|
||||||
"my-tool": map[string]any{
|
"my-tool": map[string]any{
|
||||||
"kind": toolKind,
|
"kind": toolKind,
|
||||||
@@ -546,7 +545,7 @@ func getMongoDBToolsConfig(sourceConfig map[string]any, toolKind string) map[str
|
|||||||
"description": "Tool to test invocation with params.",
|
"description": "Tool to test invocation with params.",
|
||||||
"authRequired": []string{},
|
"authRequired": []string{},
|
||||||
"collection": "test_collection",
|
"collection": "test_collection",
|
||||||
"filterPayload": `{ "name" : {{ .name }} }`,
|
"filterPayload": `{ "name" : {{json .name }} }`,
|
||||||
"filterParams": []map[string]any{
|
"filterParams": []map[string]any{
|
||||||
{
|
{
|
||||||
"name": "name",
|
"name": "name",
|
||||||
@@ -564,7 +563,7 @@ func getMongoDBToolsConfig(sourceConfig map[string]any, toolKind string) map[str
|
|||||||
"description": "Tool to test invocation with array.",
|
"description": "Tool to test invocation with array.",
|
||||||
"authRequired": []string{},
|
"authRequired": []string{},
|
||||||
"collection": "test_collection",
|
"collection": "test_collection",
|
||||||
"filterPayload": `{ "name": { "$in": {{json .nameArray}} }, "_id": 5 })`,
|
"filterPayload": `{ "name": { "$in": {{json .nameArray}} }, "_id": 5 }`,
|
||||||
"filterParams": []map[string]any{
|
"filterParams": []map[string]any{
|
||||||
{
|
{
|
||||||
"name": "nameArray",
|
"name": "nameArray",
|
||||||
@@ -630,7 +629,7 @@ func getMongoDBToolsConfig(sourceConfig map[string]any, toolKind string) map[str
|
|||||||
"description": "Tool to test deleting an entry.",
|
"description": "Tool to test deleting an entry.",
|
||||||
"authRequired": []string{},
|
"authRequired": []string{},
|
||||||
"collection": "test_collection",
|
"collection": "test_collection",
|
||||||
"filterPayload": `{ "id" : 100 }"}`,
|
"filterPayload": `{ "id" : 100 }`,
|
||||||
"filterParams": []any{},
|
"filterParams": []any{},
|
||||||
"database": MongoDbDatabase,
|
"database": MongoDbDatabase,
|
||||||
},
|
},
|
||||||
@@ -640,7 +639,7 @@ func getMongoDBToolsConfig(sourceConfig map[string]any, toolKind string) map[str
|
|||||||
"description": "Tool to test deleting multiple entries.",
|
"description": "Tool to test deleting multiple entries.",
|
||||||
"authRequired": []string{},
|
"authRequired": []string{},
|
||||||
"collection": "test_collection",
|
"collection": "test_collection",
|
||||||
"filterPayload": `{ "id" : 101 }"}`,
|
"filterPayload": `{ "id" : 101 }`,
|
||||||
"filterParams": []any{},
|
"filterParams": []any{},
|
||||||
"database": MongoDbDatabase,
|
"database": MongoDbDatabase,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user