Skip to content
Snippets Groups Projects
Commit ce316c1d authored by Tom Robinson's avatar Tom Robinson
Browse files

Base64 unit tests

parent d0cb75ac
Branches
Tags
No related merge requests found
......@@ -18,7 +18,7 @@ import DataGrid from "metabase/lib/data_grid";
import { addValidOperatorsToFields } from "metabase/lib/schema_metadata";
import Query from "metabase/lib/query";
import { serializeCardForUrl, deserializeCardFromUrl, cleanCopyCard, urlForCardState } from './card.util';
import { serializeCardForUrl, deserializeCardFromUrl, cleanCopyCard, urlForCardState } from "metabase/lib/card";
import * as reducers from './reducers';
......
......@@ -21,18 +21,18 @@ export function deserializeCardFromUrl(serialized) {
// escaping before base64 encoding is necessary for non-ASCII characters
// https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa
function utf8_to_b64(str) {
export function utf8_to_b64(str) {
return window.btoa(unescape(encodeURIComponent(str)));
}
function b64_to_utf8(b64) {
export function b64_to_utf8(b64) {
return decodeURIComponent(escape(window.atob(b64)));
}
// for "URL safe" base64, replace "+" with "-" and "/" with "_" as per RFC 4648
function utf8_to_b64url(str) {
export function utf8_to_b64url(str) {
return utf8_to_b64(str).replace(/\+/g, "-").replace(/\//g, "_");
}
function b64url_to_utf8(b64url) {
export function b64url_to_utf8(b64url) {
return b64_to_utf8(b64url.replace(/-/g, "+").replace(/_/g, "/"))
}
......
import {
utf8_to_b64,
b64_to_utf8,
utf8_to_b64url,
b64url_to_utf8
} from 'metabase/lib/card';
describe('card', () => {
describe('utf8_to_b64', () => {
it('should encode with non-URL-safe characters', () => {
expect(utf8_to_b64(" ?").indexOf("/")).toEqual(3);
expect(utf8_to_b64(" ?")).toEqual("ICA/");
});
});
describe('b64_to_utf8', () => {
it('should decode corretly', () => {
expect(b64_to_utf8("ICA/")).toEqual(" ?");
});
});
describe('utf8_to_b64url', () => {
it('should encode with URL-safe characters', () => {
expect(utf8_to_b64url(" ?").indexOf("/")).toEqual(-1);
expect(utf8_to_b64url(" ?")).toEqual("ICA_");
});
});
describe('b64url_to_utf8', () => {
it('should decode corretly', () => {
expect(b64url_to_utf8("ICA_")).toEqual(" ?");
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment