Files
Microsoft-Rewards-Bot/tests/errorReporting.test.ts

39 lines
2.1 KiB
TypeScript

import assert from 'node:assert'
import { describe, it } from 'node:test'
import { deobfuscateWebhookUrl, obfuscateWebhookUrl } from '../src/util/ErrorReportingWebhook'
describe('ErrorReportingWebhook', () => {
describe('URL obfuscation', () => {
it('should obfuscate and deobfuscate webhook URL correctly', () => {
const originalUrl = 'https://discord.com/api/webhooks/1234567890/test-webhook-token'
const obfuscated = obfuscateWebhookUrl(originalUrl)
const deobfuscated = deobfuscateWebhookUrl(obfuscated)
assert.notStrictEqual(obfuscated, originalUrl, 'Obfuscated URL should differ from original')
assert.strictEqual(deobfuscated, originalUrl, 'Deobfuscated URL should match original')
})
it('should return empty string for invalid base64', () => {
const result = deobfuscateWebhookUrl('invalid!!!base64@@@')
assert.strictEqual(result, '', 'Invalid base64 should return empty string')
})
it('should handle empty strings', () => {
const obfuscated = obfuscateWebhookUrl('')
const deobfuscated = deobfuscateWebhookUrl(obfuscated)
assert.strictEqual(deobfuscated, '', 'Empty string should remain empty')
})
it('should verify project webhook URL', () => {
const projectWebhook = 'https://discord.com/api/webhooks/1437111962394689629/tlvGKZaH9-rJir4tnZKSZpRHS3YbeN4vZnuCv50k5MpADYRPnHnZ6MybAlgF5QFo6KH_'
const expectedObfuscated = 'aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTQzNzExMTk2MjM5NDY4OTYyOS90bHZHS1phSDktckppcjR0blpLU1pwUkhTM1liZU40dlpudUN2NTBrNU1wQURZUlBuSG5aNk15YkFsZ0Y1UUZvNktIXw=='
const obfuscated = obfuscateWebhookUrl(projectWebhook)
assert.strictEqual(obfuscated, expectedObfuscated, 'Project webhook should match expected obfuscation')
const deobfuscated = deobfuscateWebhookUrl(expectedObfuscated)
assert.strictEqual(deobfuscated, projectWebhook, 'Deobfuscated should match original project webhook')
})
})
})