rkokkelk/siso

View on GitHub
test/helpers/crypto_helper_test.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'test_helper'

class CryptoHelperTest < ActiveSupport::TestCase
  include CryptoHelper

  data = 'foobar,foobar,!@#$%^&\\\'*)(_][}{|~`<.>/`'

  test 'PBKDF2 with random values' do
    iv = generate_iv
    data = generate_token
    key1 = pbkdf2(iv, data)
    key2 = pbkdf2(iv, data)

    assert_equal key1, key2
  end

  test 'AES-256 encryption with random values' do
    iv = generate_iv
    key = generate_key
    data = generate_token

    encrypt = encrypt_aes_256(iv, key, data)
    decrypt = decrypt_aes_256(iv, key, encrypt)

    assert_equal data, decrypt
  end

  test 'AES-256 encryption with random values and no encoding' do
    iv = generate_iv
    key = generate_key
    data = generate_token

    encrypt = encrypt_aes_256(iv, key, data, false)
    decrypt = decrypt_aes_256(iv, key, encrypt, false)

    assert_equal data, decrypt
  end

  test 'AES-256 encryption with empty and nil values' do
    iv = generate_iv
    key = generate_key
    data = nil

    encrypt = encrypt_aes_256(iv, key, data, false)
    decrypt = decrypt_aes_256(iv, key, encrypt, false)

    assert_equal data, decrypt

    data = ''
    encrypt = encrypt_aes_256(iv, key, data, false)
    decrypt = decrypt_aes_256(iv, key, encrypt, false)

    assert_equal data, decrypt
  end

  test 'AES-256 encryption normal values should be encrypted' do
    iv = generate_iv
    key = generate_key
    data = 'a'

    encrypt = encrypt_aes_256(iv, key, data, false)
    assert_not_equal data, encrypt

    data = generate_token
    encrypt = encrypt_aes_256(iv, key, data, false)
    assert_not_equal data, encrypt
  end

  test 'Base64 encoding with static values' do
    encode = b64_encode data
    plain = b64_decode encode

    assert_equal data, plain
  end

  test 'Base64 encoding with random values' do
    data = generate_token

    encode = b64_encode data
    plain = b64_decode encode

    assert_equal data, plain
  end

  test 'Password generate' do
    pass = generate_secure_password
    assert_equal pass.size, 8

    pass = generate_secure_password 20
    assert_equal pass.size, 20
  end
end