Sha256: 161ea5a2d70ce66cf3ae4da853646cae057cac990ec7e6a74ece20615290acab

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

require 'helper'

module Keyrack
  class TestDatabase < Test::Unit::TestCase
    def setup
      @key = "abcdefgh" * 32
      @iv = @key.reverse

      @path = get_tmpname
      @store = Store['filesystem'].new('path' => @path)

      @database = Keyrack::Database.new(@key, @iv, @store)
      @database.add('Twitter', 'username', 'password')
      @database.save
    end

    def test_encrypts_database
      encrypted_data = File.read(@path)
      cipher = OpenSSL::Cipher::Cipher.new("AES-128-CBC")
      cipher.decrypt; cipher.key = @key; cipher.iv = @iv
      marshalled_data = cipher.update(encrypted_data) + cipher.final
      data = Marshal.load(marshalled_data)
      assert_equal({'Twitter'=>{:username=>'username',:password=>'password'}}, data)
    end

    def test_reading_existing_database
      database = Keyrack::Database.new(@key, @iv, @store)
      expected = {:username => 'username', :password => 'password'}
      assert_equal(expected, database.get('Twitter'))
    end

    def test_sites
      assert_equal(%w{Twitter}, @database.sites)
    end

    def test_dirty
      assert !@database.dirty?
      @database.add('Foo', 'bar', 'baz')
      assert @database.dirty?
    end

    def test_large_number_of_entries
      site = "abcdefg"; user = "1234567"; pass = "zyxwvut" * 2
      500.times do |i|
        @database.add(site, user, pass)
        site.next!; user.next!; pass.next!
      end
      @database.save
      assert_equal 501, @database.sites.length
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
keyrack-0.2.0 test/keyrack/test_database.rb