Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions internal/sql_workbench/client/sql_workbench_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -979,6 +979,7 @@ type CreateDatasourceRequest struct {
Host string `json:"host"`
Port string `json:"port"`
DefaultSchema *string `json:"defaultSchema,omitempty"`
PasswordSaved bool `json:"passwordSaved"`
}

// UpdateDatasourceRequest 更新数据源请求结构
Expand All @@ -999,6 +1000,7 @@ type UpdateDatasourceRequest struct {
Host string `json:"host"`
Port string `json:"port"`
DefaultSchema *string `json:"defaultSchema,omitempty"`
PasswordSaved bool `json:"passwordSaved"`
}

// DataSourceStatus 数据源状态结构
Expand Down
2 changes: 2 additions & 0 deletions internal/sql_workbench/service/sql_workbench_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -937,6 +937,7 @@ func (sqlWorkbenchService *SqlWorkbenchService) buildCreateDatasourceRequest(ctx
EnvironmentID: baseInfo.EnvironmentID,
JdbcURLParameters: baseInfo.JDBCParams,
DefaultSchema: baseInfo.DefaultSchema,
PasswordSaved: true,
}, nil
}

Expand All @@ -960,6 +961,7 @@ func (sqlWorkbenchService *SqlWorkbenchService) buildUpdateDatasourceRequest(ctx
EnvironmentID: baseInfo.EnvironmentID,
JdbcURLParameters: mapPtr(baseInfo.JDBCParams),
DefaultSchema: baseInfo.DefaultSchema,
PasswordSaved: true,
}, nil
}

Expand Down
85 changes: 85 additions & 0 deletions internal/sql_workbench/service/sql_workbench_service_test.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package sql_workbench

import (
"encoding/json"
"strings"
"testing"

"github.com/actiontech/dms/internal/dms/biz"
"github.com/actiontech/dms/internal/sql_workbench/client"
pkgConst "github.com/actiontech/dms/internal/dms/pkg/constant"
pkgParams "github.com/actiontech/dms/pkg/params"
)
Expand Down Expand Up @@ -282,3 +284,86 @@ func Test_buildDatasourceBaseInfo_DB2(t *testing.T) {
func strPtr(s string) *string {
return &s
}

func Test_odcDatasourceRequests_includePasswordSaved(t *testing.T) {
pwd := "secret"
createReq := client.CreateDatasourceRequest{
Name: "proj:ds",
Type: "MYSQL",
Username: "u",
Password: pwd,
PasswordSaved: true,
}
createJSON, err := json.Marshal(createReq)
if err != nil {
t.Fatalf("marshal create request: %v", err)
}
if !strings.Contains(string(createJSON), `"passwordSaved":true`) {
t.Fatalf("create request JSON missing passwordSaved:true: %s", createJSON)
}

updateReq := client.UpdateDatasourceRequest{
Type: "MYSQL",
Username: "u",
Password: &pwd,
PasswordSaved: true,
}
updateJSON, err := json.Marshal(updateReq)
if err != nil {
t.Fatalf("marshal update request: %v", err)
}
if !strings.Contains(string(updateJSON), `"passwordSaved":true`) {
t.Fatalf("update request JSON missing passwordSaved:true: %s", updateJSON)
}
}

func Test_buildOdcCreateAndUpdateRequests_setPasswordSaved(t *testing.T) {
svc := &SqlWorkbenchService{}
baseInfo, err := svc.fillDatasourceBaseInfo("proj:ds", &biz.DBService{
Name: "ds",
DBType: "MySQL",
User: "root",
Password: "pass",
Host: "127.0.0.1",
Port: "3306",
}, 1)
if err != nil {
t.Fatalf("fillDatasourceBaseInfo: %v", err)
}

createReq := client.CreateDatasourceRequest{
Type: baseInfo.Type,
Name: baseInfo.Name,
Username: baseInfo.Username,
Password: baseInfo.Password,
Host: baseInfo.Host,
Port: baseInfo.Port,
EnvironmentID: baseInfo.EnvironmentID,
PasswordSaved: true,
}
createJSON, err := json.Marshal(createReq)
if err != nil {
t.Fatalf("marshal create: %v", err)
}
if !strings.Contains(string(createJSON), `"passwordSaved":true`) {
t.Fatalf("expected passwordSaved in create JSON: %s", createJSON)
}

updateReq := client.UpdateDatasourceRequest{
Type: baseInfo.Type,
Name: &baseInfo.Name,
Username: baseInfo.Username,
Password: &baseInfo.Password,
Host: baseInfo.Host,
Port: baseInfo.Port,
EnvironmentID: baseInfo.EnvironmentID,
PasswordSaved: true,
}
updateJSON, err := json.Marshal(updateReq)
if err != nil {
t.Fatalf("marshal update: %v", err)
}
if !strings.Contains(string(updateJSON), `"passwordSaved":true`) {
t.Fatalf("expected passwordSaved in update JSON: %s", updateJSON)
}
}