Skip to main content
Database

Data Masking

QueryValidateHard

Description

Mask sensitive data (emails, names) for privacy.

Test Scenario

-- Your query:
SELECT
  id,
  SUBSTR(name, 1, 1) || '***' as masked_name,
  SUBSTR(email, 1, 2) || '***@***' || SUBSTR(email, -4) as masked_email
FROM users;

-- Expected:
-- 1 | J*** | jo***@***.com
-- 2 | J*** | ja***@***.com

Testing Tips

  • •SUBSTR extracts part of string
  • •REPLACE substitutes characters
  • •Combine functions for masking
// Playwright API Testing - Database
import { test, expect } from '@playwright/test';
test('Database query via API', async ({ request }) => {
const response = await request.post('/api/database/query', {
data: {
sql: 'SELECT * FROM users WHERE id = ?',
params: [1]
}
});
expect(response.ok()).toBeTruthy();
const { rows } = await response.json();
expect(rows.length).toBeGreaterThan(0);
});

Challenge ID: sql-data-masking

2 frameworks available