Skip to content

Commit 8bfc3c5

Browse files
committed
chore: add some tests for server and client config
1 parent 258ce85 commit 8bfc3c5

File tree

2 files changed

+72
-2
lines changed

2 files changed

+72
-2
lines changed

src/__tests__/extensions/replay/sessionrecording.test.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,73 @@ describe('SessionRecording', () => {
429429
)
430430
})
431431

432+
describe('masking config', () => {
433+
it.each([
434+
[
435+
'enabled when both enabled',
436+
{ maskAllInputs: true, maskTextSelector: '*' },
437+
{ maskAllInputs: true, maskTextSelector: '*' },
438+
{ maskAllInputs: true, maskTextSelector: '*' },
439+
],
440+
[
441+
'disabled when both disabled',
442+
{ maskAllInputs: false },
443+
{ maskAllInputs: false },
444+
{ maskAllInputs: false },
445+
],
446+
[
447+
'is undefined when nothing is set',
448+
undefined,
449+
undefined,
450+
{
451+
maskAllInputs: undefined,
452+
maskTextSelector: undefined,
453+
},
454+
],
455+
[
456+
'uses client config when set if server config is not set',
457+
undefined,
458+
{ maskAllInputs: true, maskTextSelector: '#client' },
459+
{ maskAllInputs: true, maskTextSelector: '#client' },
460+
],
461+
[
462+
'uses server config when set if client config is not set',
463+
{ maskAllInputs: false, maskTextSelector: '#server' },
464+
undefined,
465+
{ maskAllInputs: false, maskTextSelector: '#server' },
466+
],
467+
[
468+
'overrides server config with client config if both are set',
469+
{ maskAllInputs: false, maskTextSelector: '#server' },
470+
{ maskAllInputs: true, maskTextSelector: '#client' },
471+
{ maskAllInputs: true, maskTextSelector: '#client' },
472+
],
473+
[
474+
'partially overrides server config with client config if both are set',
475+
{ maskAllInputs: true, maskTextSelector: '*' },
476+
{ maskAllInputs: false },
477+
{ maskAllInputs: false, maskTextSelector: '*' },
478+
],
479+
])(
480+
'%s',
481+
(
482+
_name: string,
483+
serverConfig: { maskAllInputs?: boolean; maskTextSelector?: string } | undefined,
484+
clientConfig: { maskAllInputs: boolean; maskTextSelector?: string } | undefined,
485+
expected: { maskAllInputs: boolean; maskTextSelector?: string } | undefined
486+
) => {
487+
posthog.persistence?.register({
488+
[SESSION_RECORDING_MASKING]: serverConfig,
489+
})
490+
491+
posthog.config.session_recording.maskAllInputs = clientConfig?.maskAllInputs
492+
posthog.config.session_recording.maskTextSelector = clientConfig?.maskTextSelector
493+
494+
expect(sessionRecording['masking']).toEqual(expected)
495+
}
496+
)
497+
})
498+
432499
describe('startIfEnabledOrStop', () => {
433500
beforeEach(() => {
434501
// need to cast as any to mock private methods

src/extensions/replay/sessionrecording.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,9 +394,12 @@ export class SessionRecording {
394394
maskTextSelector: this.instance.config.session_recording?.maskTextSelector,
395395
}
396396

397+
const maskAllInputs = masking_client_side?.maskAllInputs ?? masking_server_side?.maskAllInputs
398+
const maskTextSelector = masking_client_side?.maskTextSelector ?? masking_server_side?.maskTextSelector
399+
397400
return {
398-
...masking_server_side,
399-
...masking_client_side,
401+
maskAllInputs,
402+
maskTextSelector,
400403
}
401404
}
402405

0 commit comments

Comments
 (0)