Skip to main content
Glama
base64.test.tsโ€ข3.58 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { decodeBase64, decodeBase64Url, encodeBase64, encodeBase64Url } from './base64'; // Mock the environment module jest.mock('./environment'); import * as environment from './environment'; const mockEnvironment = environment as jest.Mocked<typeof environment>; describe('Base64', () => { beforeEach(() => { jest.resetAllMocks(); }); test('Browser', () => { // Mock browser environment mockEnvironment.isBrowserEnvironment.mockReturnValue(true); mockEnvironment.isNodeEnvironment.mockReturnValue(false); mockEnvironment.getWindow.mockReturnValue(window as any); const encoded = encodeBase64('Hello world'); expect(encoded).toBe('SGVsbG8gd29ybGQ='); const decoded = decodeBase64(encoded); expect(decoded).toBe('Hello world'); const encodedUnicode = encodeBase64('๐Ÿ‘‹๐ŸŒ'); expect(encodedUnicode).toBe('8J+Ri/CfjI0='); const decodedUnicode = decodeBase64(encodedUnicode); expect(decodedUnicode).toBe('๐Ÿ‘‹๐ŸŒ'); }); test('Node.js', () => { // Mock Node.js environment mockEnvironment.isBrowserEnvironment.mockReturnValue(false); mockEnvironment.isNodeEnvironment.mockReturnValue(true); mockEnvironment.getBuffer.mockReturnValue(Buffer as any); const encoded = encodeBase64('Hello world'); expect(encoded).toBe('SGVsbG8gd29ybGQ='); const decoded = decodeBase64(encoded); expect(decoded).toBe('Hello world'); const encodedUnicode = encodeBase64('๐Ÿ‘‹๐ŸŒ'); expect(encodedUnicode).toBe('8J+Ri/CfjI0='); const decodedUnicode = decodeBase64(encodedUnicode); expect(decodedUnicode).toBe('๐Ÿ‘‹๐ŸŒ'); }); test('Error', () => { // Mock environment with neither browser nor Node.js mockEnvironment.isBrowserEnvironment.mockReturnValue(false); mockEnvironment.isNodeEnvironment.mockReturnValue(false); expect(() => encodeBase64('Hello world')).toThrow('Unable to encode base64'); expect(() => decodeBase64('SGVsbG8gd29ybGQ=')).toThrow('Unable to decode base64'); }); }); describe('Base64URL', () => { const paddingString = 'Hello world'; const paddingStringBase64Url = 'SGVsbG8gd29ybGQ'; const unicodeString = '๐Ÿ‘‹๐ŸŒ'; const unicodeStringBase64Url = '8J-Ri_CfjI0'; beforeEach(() => { jest.resetAllMocks(); }); test('Browser', () => { // Mock browser environment mockEnvironment.isBrowserEnvironment.mockReturnValue(true); mockEnvironment.isNodeEnvironment.mockReturnValue(false); mockEnvironment.getWindow.mockReturnValue(window as any); // Test encoding expect(encodeBase64Url(paddingString)).toBe(paddingStringBase64Url); expect(encodeBase64Url(unicodeString)).toBe(unicodeStringBase64Url); // Test decoding expect(decodeBase64Url(paddingStringBase64Url)).toBe(paddingString); expect(decodeBase64Url(unicodeStringBase64Url)).toBe(unicodeString); }); test('Node.js', () => { // Mock Node.js environment mockEnvironment.isBrowserEnvironment.mockReturnValue(false); mockEnvironment.isNodeEnvironment.mockReturnValue(true); mockEnvironment.getBuffer.mockReturnValue(Buffer as any); // Test encoding expect(encodeBase64Url(paddingString)).toBe(paddingStringBase64Url); expect(encodeBase64Url(unicodeString)).toBe(unicodeStringBase64Url); // Test decoding expect(decodeBase64Url(paddingStringBase64Url)).toBe(paddingString); expect(decodeBase64Url(unicodeStringBase64Url)).toBe(unicodeString); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server