department-of-veterans-affairs/vets-website

View on GitHub
src/platform/utilities/oauth/mockCrypto.js

Summary

Maintainability
A
0 mins
Test Coverage
import { createHash, randomFillSync } from 'crypto';

function getArrayBufferOrView(buffer) {
  if (Buffer.isBuffer(buffer)) {
    return buffer;
  }
  if (typeof buffer === 'string') {
    return Buffer.from(buffer, 'utf8');
  }
  return buffer;
}

// Only use for unit-tests
export const mockCrypto = {
  getRandomValues(buffer) {
    return randomFillSync(buffer);
  },
  subtle: {
    digest(algorithm = 'SHA-256', data) {
      const _algorithm = algorithm.toLowerCase().replace('-', '');
      const _data = getArrayBufferOrView(data);

      return new Promise((resolve, _) => {
        resolve(
          createHash(_algorithm)
            .update(_data)
            .digest(),
        );
      });
    },
  },
};