def test_fetch_entries_empty_database(tmpdir):
    test_database = _move_test_file_to_tmpdir(tmpdir, "empty.kdb")

    backend = Backend(test_database)
    backend.open_database("abcd123")

    backend.sync_entries()
    assert len(backend.entries.items) == 0
def test_create_config(tmpdir):
    test_database = _move_test_file_to_tmpdir(tmpdir, "test_create_config.kdb")

    backend = Backend(test_database, "abcd123")
    backend.sync_entries()
    assert len(backend.entries.items) == 0

    backend.create_config_key("test_name", "test_key")
    assert len(backend.entries.items) == 1
    assert backend.entries.items.pop() == EntrySpec(login="",
                                                    url='',
                                                    password='******',
                                                    title='test_name',
                                                    uuid="")
def test_create_login(tmpdir):
    test_database = _move_test_file_to_tmpdir(tmpdir, "test_create_login.kdb")

    test_databse_passphrase = "abcd123"

    x = Backend(test_database, test_databse_passphrase)

    x.sync_entries()
    assert len(x.entries.items) == 1
    # valid logins
    x.create_login(u"test_name", "*****@*****.**", "geheim", "https://www.google.com/login")
    # 2 accounts, same domain
    x.create_login(u"test_name", "*****@*****.**", "geheim2", "https://gmx.net/login")
    x.create_login(u"test_name", "*****@*****.**", "geheim3", "https://gmx.net/login")
    # another login
    x.create_login(u"test_name", "*****@*****.**", "geheim4", "http://web.de/login/form.php")
    # x.get_entries(purge_cache=True)

    assert len(x.entries.items) == 5

    # FIXME: remove config for client!
    del x.entries.items[0]
    # first one is the client config (key)

    assert x.entries.items[0] == EntrySpec(login="******",
                                           url='https://www.google.com/login',
                                           password='******',
                                           title="www.google.com",
                                           uuid="")
    assert x.entries.items[1] == EntrySpec(login="******",
                                           url='https://gmx.net/login',
                                           password='******',
                                           title="gmx.net",
                                           uuid="")
    assert x.entries.items[2] == EntrySpec(login="******",
                                           url='https://gmx.net/login',
                                           password='******',
                                           title="gmx.net",
                                           uuid="")
    assert x.entries.items[3] == EntrySpec(login="******",
                                           url='http://web.de/login/form.php',
                                           password='******',
                                           title="web.de",
                                           uuid="")
def test_get_search_entries(tmpdir):
    test_database = _move_test_file_to_tmpdir(tmpdir, "test_search_for_entries.kdb")

    backend = Backend(test_database, "abcd123")
    backend.sync_entries()
    assert len(backend.entries.items) == 5

    # FIXME: remove config for client!
    # first one is the client config (key)
    del backend.entries.items[0]

    results = backend.search_entries("url", "https://www.google.com/login")
    assert len(results) == 1

    results = backend.search_entries("url", "https://gmx.net/login")
    assert len(results) == 2

    results = backend.search_entries("url", "http://web.de/login/form.php")
    assert len(results) == 1