From df900b8a0497f8f6047ea17508761aaf4828aa11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0nan=C3=A7=20G=C3=BCm=C3=BC=C5=9F?= Date: Mon, 4 Nov 2024 11:31:59 -0500 Subject: [PATCH] Refactor GrantPermissionOptions parsing to mapping - Turns GrantPermissionsOptions to a value type from a pointer as this type is not need to be used to be mutated. - Moves Sobek transformation to the mapping layer. - Errors out if an incorrect option is given. This way we don't surprise users and train them to use the API correctly. Otherwise, hiding these errors might lead to unexpected issues. --- browser/browser_context_mapping.go | 33 +++++++++++++++++++----- browser/sync_browser_context_mapping.go | 9 ++++--- common/browser_context.go | 4 +-- common/browser_context_options.go | 20 -------------- example-chromium.png | Bin 0 -> 66930 bytes tests/browser_context_test.go | 10 +++++-- 6 files changed, 42 insertions(+), 34 deletions(-) create mode 100644 example-chromium.png diff --git a/browser/browser_context_mapping.go b/browser/browser_context_mapping.go index 5ba69b95a..3981cbffd 100644 --- a/browser/browser_context_mapping.go +++ b/browser/browser_context_mapping.go @@ -74,13 +74,14 @@ func mapBrowserContext(vu moduleVU, bc *common.BrowserContext) mapping { //nolin return bc.Cookies(urls...) //nolint:wrapcheck }) }, - "grantPermissions": func(permissions []string, opts sobek.Value) *sobek.Promise { + "grantPermissions": func(permissions []string, opts sobek.Value) (*sobek.Promise, error) { + popts, err := parseGrantPermissionOptions(vu.Runtime(), opts) + if err != nil { + return nil, fmt.Errorf("parsing grant permission options: %w", err) + } return k6ext.Promise(vu.Context(), func() (any, error) { - popts := common.NewGrantPermissionsOptions() - popts.Parse(vu.Context(), opts) - - return nil, bc.GrantPermissions(permissions, popts) //nolint:wrapcheck - }) + return nil, bc.GrantPermissions(permissions, popts) + }), nil }, "setDefaultNavigationTimeout": bc.SetDefaultNavigationTimeout, "setDefaultTimeout": bc.SetDefaultTimeout, @@ -185,3 +186,23 @@ func mapBrowserContext(vu moduleVU, bc *common.BrowserContext) mapping { //nolin }, } } + +// parseGrantPermissionOptions parses the options for the browserContext.grantPermissions API. +func parseGrantPermissionOptions(rt *sobek.Runtime, opts sobek.Value) (common.GrantPermissionsOptions, error) { + if !sobekValueExists(opts) { + return common.GrantPermissionsOptions{}, nil + } + + var g common.GrantPermissionsOptions + + o := opts.ToObject(rt) + for _, k := range o.Keys() { + if k == "origin" { + g.Origin = o.Get(k).String() + continue + } + return common.GrantPermissionsOptions{}, fmt.Errorf("unknown option: %s", k) + } + + return g, nil +} diff --git a/browser/sync_browser_context_mapping.go b/browser/sync_browser_context_mapping.go index b304a64a0..50f419149 100644 --- a/browser/sync_browser_context_mapping.go +++ b/browser/sync_browser_context_mapping.go @@ -49,10 +49,11 @@ func syncMapBrowserContext(vu moduleVU, bc *common.BrowserContext) mapping { //n "close": bc.Close, "cookies": bc.Cookies, "grantPermissions": func(permissions []string, opts sobek.Value) error { - pOpts := common.NewGrantPermissionsOptions() - pOpts.Parse(vu.Context(), opts) - - return bc.GrantPermissions(permissions, pOpts) //nolint:wrapcheck + popts, err := parseGrantPermissionOptions(vu.Runtime(), opts) + if err != nil { + return fmt.Errorf("parsing grant permission options: %w", err) + } + return bc.GrantPermissions(permissions, popts) }, "setDefaultNavigationTimeout": bc.SetDefaultNavigationTimeout, "setDefaultTimeout": bc.SetDefaultTimeout, diff --git a/common/browser_context.go b/common/browser_context.go index 65d6bda52..3e2257dce 100644 --- a/common/browser_context.go +++ b/common/browser_context.go @@ -131,7 +131,7 @@ func NewBrowserContext( } if len(opts.Permissions) > 0 { - err := b.GrantPermissions(opts.Permissions, NewGrantPermissionsOptions()) + err := b.GrantPermissions(opts.Permissions, GrantPermissionsOptions{}) if err != nil { return nil, err } @@ -206,7 +206,7 @@ func (b *BrowserContext) Close() error { } // GrantPermissions enables the specified permissions, all others will be disabled. -func (b *BrowserContext) GrantPermissions(permissions []string, opts *GrantPermissionsOptions) error { +func (b *BrowserContext) GrantPermissions(permissions []string, opts GrantPermissionsOptions) error { b.logger.Debugf("BrowserContext:GrantPermissions", "bctxid:%v", b.id) permsToProtocol := map[string]cdpbrowser.PermissionType{ diff --git a/common/browser_context_options.go b/common/browser_context_options.go index 26ba16429..32a86764c 100644 --- a/common/browser_context_options.go +++ b/common/browser_context_options.go @@ -150,23 +150,3 @@ func (w *WaitForEventOptions) Parse(ctx context.Context, optsOrPredicate sobek.V type GrantPermissionsOptions struct { Origin string } - -// NewGrantPermissionsOptions returns a new GrantPermissionsOptions. -func NewGrantPermissionsOptions() *GrantPermissionsOptions { - return &GrantPermissionsOptions{} -} - -// Parse parses the options from opts if opts exists in the sobek runtime. -func (g *GrantPermissionsOptions) Parse(ctx context.Context, opts sobek.Value) { - rt := k6ext.Runtime(ctx) - - if sobekValueExists(opts) { - opts := opts.ToObject(rt) - for _, k := range opts.Keys() { - if k == "origin" { - g.Origin = opts.Get(k).String() - break - } - } - } -} diff --git a/example-chromium.png b/example-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..f3617cb484e60ed253b0525254d7ca602b992501 GIT binary patch literal 66930 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 A4*&oF literal 0 HcmV?d00001 diff --git a/tests/browser_context_test.go b/tests/browser_context_test.go index 13cd437f3..c4589fbcc 100644 --- a/tests/browser_context_test.go +++ b/tests/browser_context_test.go @@ -912,7 +912,10 @@ func TestBrowserContextGrantPermissions(t *testing.T) { bCtx, err := tb.NewContext(nil) require.NoError(t, err) - err = bCtx.GrantPermissions([]string{tc.permission}, common.NewGrantPermissionsOptions()) + err = bCtx.GrantPermissions( + []string{tc.permission}, + common.GrantPermissionsOptions{}, + ) if tc.wantErr == "" { assert.NoError(t, err) @@ -968,7 +971,10 @@ func TestBrowserContextClearPermissions(t *testing.T) { require.False(t, hasPermission(tb, p, "geolocation")) - err = bCtx.GrantPermissions([]string{"geolocation"}, common.NewGrantPermissionsOptions()) + err = bCtx.GrantPermissions( + []string{"geolocation"}, + common.GrantPermissionsOptions{}, + ) require.NoError(t, err) require.True(t, hasPermission(tb, p, "geolocation"))