/usr/lib/python2.7/dist-packages/keyring/tests/test_backend.py is in python-keyring 7.3-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # -*- coding: utf-8 -*-
"""
test_backend.py
Test case for keyring basic function
created by Kang Zhang 2009-07-14
"""
from __future__ import with_statement
import string
from keyring.util import escape
from .util import random_string
from keyring import errors
DIFFICULT_CHARS = string.whitespace + string.punctuation
# unicode only characters
# Sourced from The Quick Brown Fox... Pangrams
# http://www.columbia.edu/~fdc/utf8/
UNICODE_CHARS = escape.u(
"""זהכיףסתםלשמועאיךתנצחקרפדעץטובבגן"""
"""ξεσκεπάζωτηνψυχοφθόραβδελυγμία"""
"""Съешьжеещёэтихмягкихфранцузскихбулокдавыпейчаю"""
"""Жълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьон"""
)
# ensure no-ascii chars slip by - watch your editor!
assert min(ord(char) for char in UNICODE_CHARS) > 127
class BackendBasicTests(object):
"""Test for the keyring's basic functions. password_set and password_get
"""
def setUp(self):
self.keyring = self.init_keyring()
self.credentials_created = set()
def tearDown(self):
for item in self.credentials_created:
self.keyring.delete_password(*item)
def set_password(self, service, username, password):
# set the password and save the result so the test runner can clean
# up after if necessary.
self.keyring.set_password(service, username, password)
self.credentials_created.add((service, username))
def check_set_get(self, service, username, password):
keyring = self.keyring
# for the non-existent password
self.assertEqual(keyring.get_password(service, username), None)
# common usage
self.set_password(service, username, password)
self.assertEqual(keyring.get_password(service, username), password)
# for the empty password
self.set_password(service, username, "")
self.assertEqual(keyring.get_password(service, username), "")
def test_password_set_get(self):
password = random_string(20)
username = random_string(20)
service = random_string(20)
self.check_set_get(service, username, password)
def test_difficult_chars(self):
password = random_string(20, DIFFICULT_CHARS)
username = random_string(20, DIFFICULT_CHARS)
service = random_string(20, DIFFICULT_CHARS)
self.check_set_get(service, username, password)
def test_delete_present(self):
password = random_string(20, DIFFICULT_CHARS)
username = random_string(20, DIFFICULT_CHARS)
service = random_string(20, DIFFICULT_CHARS)
self.keyring.set_password(service, username, password)
self.keyring.delete_password(service, username)
self.assertIsNone(self.keyring.get_password(service, username))
def test_delete_not_present(self):
username = random_string(20, DIFFICULT_CHARS)
service = random_string(20, DIFFICULT_CHARS)
self.assertRaises(errors.PasswordDeleteError,
self.keyring.delete_password, service, username)
def test_delete_one_in_group(self):
username1 = random_string(20, DIFFICULT_CHARS)
username2 = random_string(20, DIFFICULT_CHARS)
password = random_string(20, DIFFICULT_CHARS)
service = random_string(20, DIFFICULT_CHARS)
self.keyring.set_password(service, username1, password)
self.set_password(service, username2, password)
self.keyring.delete_password(service, username1)
self.assertEqual(self.keyring.get_password(
service, username2), password)
def test_unicode_chars(self):
password = random_string(20, UNICODE_CHARS)
username = random_string(20, UNICODE_CHARS)
service = random_string(20, UNICODE_CHARS)
self.check_set_get(service, username, password)
def test_unicode_and_ascii_chars(self):
source = (random_string(10, UNICODE_CHARS) + random_string(10) +
random_string(10, DIFFICULT_CHARS))
password = random_string(20, source)
username = random_string(20, source)
service = random_string(20, source)
self.check_set_get(service, username, password)
def test_different_user(self):
"""
Issue #47 reports that WinVault isn't storing passwords for
multiple users. This test exercises that test for each of the
backends.
"""
keyring = self.keyring
self.set_password('service1', 'user1', 'password1')
self.set_password('service1', 'user2', 'password2')
self.assertEqual(keyring.get_password('service1', 'user1'),
'password1')
self.assertEqual(keyring.get_password('service1', 'user2'),
'password2')
self.set_password('service2', 'user3', 'password3')
self.assertEqual(keyring.get_password('service1', 'user1'),
'password1')
|