PyBitmessage-2021-04-27/src/graphicaltesting/test_blackwhitelist.py

135 lines
6.5 KiB
Python

"""Tests for blackwhitelist"""
from random import choice
from string import ascii_lowercase
from PyQt4 import QtCore, QtGui
from PyQt4.QtTest import QTest
from addresses import addBMIfNotPresent
from bitmessageqt import blacklist
from bitmessageqt.dialogs import AddAddressDialog
from bitmessageqt.utils import avatarize
from bmconfigparser import BMConfigParser
from helper_sql import sqlExecute, sqlQuery
from testloader import BitmessageTestCase
from tr import _translate
class BitmessageTest_BlackandWhiteList(BitmessageTestCase):
"""Blacklist and Whitelist address add functionality tests"""
# pylint: disable=attribute-defined-outside-init
def test_blackwhitelist(self):
"""Tab switch to blacklist and add the address on blacklist and whitelist"""
print("=====================Test - Adding Address to Black/WhiteList=====================")
self.blacklist_obj = blacklist.Blacklist()
try:
QTest.qWait(500)
self.myapp.ui.tabWidget.setCurrentWidget(self.myapp.ui.blackwhitelist)
QTest.qWait(500)
self.dialog = AddAddressDialog(self.myapp)
blacklistcount = len(sqlQuery("Select * from blacklist"))
self.myapp.ui.blackwhitelist.radioButtonBlacklist.click()
self.myapp.ui.blackwhitelist.pushButtonAddBlacklist.setStyleSheet(
"QPushButton {background-color: #FF5733; color: white;}")
QTest.qWait(50)
self.myapp.ui.blackwhitelist.pushButtonAddBlacklist.setStyleSheet("")
self.blackwhitelist_autofill()
self.myapp.ui.blackwhitelist.radioButtonWhitelist.click()
self.myapp.ui.blackwhitelist.radioButtonBlacklist.click()
QTest.qWait(500)
whitelistcount = len(sqlQuery("Select * from whitelist"))
self.myapp.ui.blackwhitelist.radioButtonWhitelist.click()
self.myapp.ui.blackwhitelist.pushButtonAddBlacklist.setStyleSheet(
"QPushButton {background-color: #FF5733; color: white;}")
QTest.qWait(50)
self.myapp.ui.blackwhitelist.pushButtonAddBlacklist.setStyleSheet("")
self.blackwhitelist_autofill()
self.myapp.ui.blackwhitelist.radioButtonBlacklist.click()
self.myapp.ui.blackwhitelist.radioButtonWhitelist.click()
QTest.qWait(500)
self.assertEqual(blacklistcount + 1, len(sqlQuery("Select * from blacklist")))
self.assertEqual(whitelistcount + 1, len(sqlQuery("Select * from whitelist")))
except:
return 0
def blackwhitelist_autofill(self):
"""Auto fills the blackwhitelist fields"""
try:
self.dialog.lineEditLabel.setText("")
self.dialog.lineEditAddress.setText("")
QTest.qWait(350)
self.dialog.show()
QTest.qWait(750)
self.random_label = ""
for _ in range(30):
self.random_label += choice(ascii_lowercase)
self.dialog.lineEditLabel.setText(self.random_label)
QTest.qWait(4)
QTest.qWait(500)
rand_address = choice(BMConfigParser().addresses())
self.random_address = ""
for i, _ in enumerate(rand_address):
self.random_address += rand_address[i]
self.dialog.lineEditAddress.setText(self.random_address)
QTest.qWait(4)
QTest.qWait(500)
QtCore.QTimer.singleShot(
0, self.dialog.buttonBox.button(QtGui.QDialogButtonBox.Ok).clicked)
self.blacklist_test()
except:
pass
def blacklist_test(self):
"""fill blacklist and whitelist fields"""
# pylint: disable=no-else-return
try:
if self.dialog.labelAddressCheck.text() == _translate("MainWindow", "Address is valid."):
address = addBMIfNotPresent(str(self.dialog.lineEditAddress.text()))
t = (address,)
if BMConfigParser().get("bitmessagesettings", "blackwhitelist") == "black":
sql = """select * from blacklist where address=?"""
else:
sql = """select * from whitelist where address=?"""
queryreturn = sqlQuery(sql, *t)
if queryreturn == []:
self.blacklist_obj.tableWidgetBlacklist.setSortingEnabled(False)
self.blacklist_obj.tableWidgetBlacklist.insertRow(0)
newItem = QtGui.QTableWidgetItem(
unicode(self.dialog.lineEditLabel.text().toUtf8(), "utf-8"))
newItem.setIcon(avatarize(address))
self.blacklist_obj.tableWidgetBlacklist.setItem(0, 0, newItem)
newItem = QtGui.QTableWidgetItem(address)
newItem.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
self.blacklist_obj.tableWidgetBlacklist.setItem(0, 1, newItem)
self.blacklist_obj.tableWidgetBlacklist.setSortingEnabled(True)
t = (str(self.dialog.lineEditLabel.text().toUtf8()), address, True)
if BMConfigParser().get("bitmessagesettings", "blackwhitelist") == "black":
sql = """INSERT INTO blacklist VALUES (?,?,?)"""
sqlExecute(sql, *t)
black_list_value = sqlQuery(
"Select address from blacklist where label='" + self.random_label + "'")[0]
self.assertEqual(black_list_value[0], self.random_address)
print("Test Pass:--> Address Added to the blacklist")
return 1
else:
sql = """INSERT INTO whitelist VALUES (?,?,?)"""
sqlExecute(sql, *t)
white_list_value = sqlQuery(
"Select address from whitelist where label='" + self.random_label + "'")[0]
self.assertEqual(white_list_value[0], self.random_address)
print("Test Pass:--> Address Added to the whitelist")
return 1
else:
print(
"Test Fail:--> You cannot add the same address to your list twice."
"Perhaps rename the existing one if you want")
return 0
else:
QTest.qWait(100)
print("Test Fail:--> The address you entered was invalid. Ignoring it")
return 0
except:
pass