Add Authorized Data Sharing in Script Runner Execution

- Introduced functionality to set shared data with authorized information for Process calls in the ScriptRunner.
- Enhanced the executeTestFunction to include error handling for setting share data, improving robustness during script execution.
- This change ensures that authorization context is properly managed when calling JavaScript functions directly, enhancing security and functionality.
This commit is contained in:
Max 2025-12-23 08:20:47 +08:00
parent 4c80c3ffa0
commit 809792c152

View file

@ -424,6 +424,22 @@ func (r *ScriptRunner) executeTestFunction(tc *ScriptTestCase, scriptInfo *Scrip
// Get the V8 context // Get the V8 context
v8ctx := scriptCtx.Context v8ctx := scriptCtx.Context
// Set share data with authorized info for Process calls
// This is needed because we call fn.Call directly instead of scriptCtx.Call
var authorized map[string]interface{}
if agentCtx.Authorized != nil {
authorized = agentCtx.Authorized.AuthorizedToMap()
}
err = bridge.SetShareData(v8ctx, v8ctx.Global(), &bridge.Share{
Sid: "",
Root: false,
Global: nil,
Authorized: authorized,
})
if err != nil {
return fmt.Errorf("failed to set share data: %w", err)
}
// Create testing.T JavaScript object // Create testing.T JavaScript object
testingTObj, err := NewTestingTObject(v8ctx, testingT) testingTObj, err := NewTestingTObject(v8ctx, testingT)
if err != nil { if err != nil {