diff --git a/src/bitmessagekivy/tests/telenium_process.py b/src/bitmessagekivy/tests/telenium_process.py index fe447a87..03ec0e98 100644 --- a/src/bitmessagekivy/tests/telenium_process.py +++ b/src/bitmessagekivy/tests/telenium_process.py @@ -51,3 +51,12 @@ class TeleniumTestProcess(TeleniumTestCase): cleanup() cls.cli.app_quit() cls.process.kill() + + def click_on(self, xpath, seconds=0.3): + """this methos is used for on_click event with time""" + self.cli.click_on(xpath) + self.cli.sleep(seconds) + + def drag(self, xpath1, xpath2): + self.cli.drag(xpath1, xpath2, 1) + self.cli.sleep(0.3) diff --git a/src/bitmessagekivy/tests/test_setting_screen.py b/src/bitmessagekivy/tests/test_setting_screen.py index 0804420b..57490e36 100644 --- a/src/bitmessagekivy/tests/test_setting_screen.py +++ b/src/bitmessagekivy/tests/test_setting_screen.py @@ -9,13 +9,15 @@ class SettingScreen(TeleniumTestProcess): print("=====================Test -Show Setting Screen=====================") self.cli.sleep(3) # this is for opening Nav drawer - self.cli.click_on('//MDActionTopAppBarButton[@icon=\"menu\"]') - self.cli.sleep(3) + self.click_on('//MDActionTopAppBarButton[@icon=\"menu\"]') + # checking state of Nav drawer + self.assertEqual(self.cli.getattr('//MDNavigationDrawer', 'state'), 'open') # this is for scrolling Nav drawer - self.cli.drag("//NavigationItem[@text=\"Sent\"]", "//NavigationItem[@text=\"Inbox\"]", 1) - self.cli.sleep(3) + self.drag("//NavigationItem[@text=\"Sent\"]", "//NavigationItem[@text=\"Inbox\"]") + # assert for checking scroll funcation + scroll_distance = self.cli.getattr('//ContentNavigationDrawer//ScrollView[0]', 'scroll_y') + self.assertLessEqual(scroll_distance, -0.0) # this is for opening setting screen - self.cli.click_on('//NavigationItem[@text=\"Settings\"]') - self.cli.sleep(2) + self.click_on('//NavigationItem[@text=\"Settings\"]') # Checking current screen self.assertExists("//Setting[@name~=\"set\"]", timeout=2) diff --git a/src/buildozer.spec b/src/buildozer.spec index 797915ad..86282320 100644 --- a/src/buildozer.spec +++ b/src/buildozer.spec @@ -57,7 +57,7 @@ requirements = # requirements.source.kivy = ../../kivy # (list) Garden requirements -garden_requirements = qrcode +#garden_requirements = qrcode # (str) Presplash of the application #presplash.filename = %(source.dir)s/data/presplash.png diff --git a/src/fake_addressGenerator.py b/src/fake_addressGenerator.py index 92ae2b44..d9072ef6 100644 --- a/src/fake_addressGenerator.py +++ b/src/fake_addressGenerator.py @@ -8,13 +8,28 @@ from bmconfigparser import BMConfigParser from network.threads import StoppableThread -fake_addresses = [ - 'BM-2cXDconV3bk6nPwWgBwN7wXaqZoT1bEzGv', - 'BM-2cTWjUVedYftZJbnZfs7MWts92v1R35Try', - 'BM-2cV1UN3er2YVQBcmJaaeYMXvpwBVokJNTo', - 'BM-2cWVkWk3TyKUscdcn9E7s9hrwpv2ZsBBog', - 'BM-2cW2a5R1KidMGNByqPKn6nJDDnHtazoere' -] +fake_addresses = { + 'BM-2cUgQGcTLWAkC6dNsv2Bc8XB3Y1GEesVLV': { + 'privsigningkey': '5KWXwYq1oJMzghUSJaJoWPn8VdeBbhDN8zFot1cBd6ezKKReqBd', + 'privencryptionkey': '5JaeFJs8iPcQT3N8676r3gHKvJ5mTWXy1VLhGCEDqRs4vpvpxV8' + }, + 'BM-2cUd2dm8MVMokruMTcGhhteTpyRZCAMhnA': { + 'privsigningkey': '5JnJ79nkcwjo4Aj7iG8sFMkzYoQqWfpUjTcitTuFJZ1YKHZz98J', + 'privencryptionkey': '5JXgNzTRouFLqSRFJvuHMDHCYPBvTeMPBiHt4Jeb6smNjhUNTYq' + }, + 'BM-2cWyvL54WytfALrJHZqbsDHca5QkrtByAW': { + 'privsigningkey': '5KVE4gLmcfYVicLdgyD4GmnbBTFSnY7Yj2UCuytQqgBBsfwDhpi', + 'privencryptionkey': '5JTw48CGm5CP8fyJUJQMq8HQANQMHDHp2ETUe1dgm6EFpT1egD7' + }, + 'BM-2cTE65PK9Y4AQEkCZbazV86pcQACocnRXd': { + 'privsigningkey': '5KCuyReHx9MB4m5hhEyCWcLEXqc8rxhD1T2VWk8CicPFc8B6LaZ', + 'privencryptionkey': '5KBRpwXdX3n2tP7f583SbFgfzgs6Jemx7qfYqhdH7B1Vhe2jqY6' + }, + 'BM-2cX5z1EgmJ87f2oKAwXdv4VQtEVwr2V3BG': { + 'privsigningkey': '5K5UK7qED7F1uWCVsehudQrszLyMZxFVnP6vN2VDQAjtn5qnyRK', + 'privencryptionkey': '5J5coocoJBX6hy5DFTWKtyEgPmADpSwfQTazMpU7QPeART6oMAu' + } +} class FakeAddressGenerator(StoppableThread): @@ -38,16 +53,19 @@ class FakeAddressGenerator(StoppableThread): streamNumber = 1 try: if len(BMConfigParser().addresses()) > 0: - address = fake_addresses[len(BMConfigParser().addresses())] + address = list(fake_addresses.keys())[len(BMConfigParser().addresses())] else: - address = fake_addresses[0] + address = list(fake_addresses.keys())[0] label = queueValue[3] + BMConfigParser().add_section(address) BMConfigParser().set(address, 'label', label) BMConfigParser().set(address, 'enabled', 'true') BMConfigParser().set( - address, 'privencryptionkey', '5KUayt1aPSsNWsxMJnk27kv79wfRE3cWVPYLazyLQc752bXfQP3') + address, 'privsigningkey', fake_addresses[address]['privsigningkey']) + BMConfigParser().set( + address, 'privencryptionkey', fake_addresses[address]['privencryptionkey']) BMConfigParser().save() queues.UISignalQueue.put(( diff --git a/src/mock/__init__.py b/src/mock/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/mock/class_addressGenerator.py b/src/mock/class_addressGenerator.py deleted file mode 100644 index 5d6b0351..00000000 --- a/src/mock/class_addressGenerator.py +++ /dev/null @@ -1,93 +0,0 @@ -""" -A thread for creating addresses -""" -# import queues -try: - import queue as Queue -except ImportError: - import Queue - -import logging -import random -from pybitmessage import state -import threading - -from pybitmessage.bmconfigparser import BMConfigParser - -# from network.threads import StoppableThread - - -fake_addresses = [ - 'BM-2cXDconV3bk6nPwWgBwN7wXaqZoT1bEzGv', - 'BM-2cTWjUVedYftZJbnZfs7MWts92v1R35Try', - 'BM-2cV1UN3er2YVQBcmJaaeYMXvpwBVokJNTo', - 'BM-2cWVkWk3TyKUscdcn9E7s9hrwpv2ZsBBog', - 'BM-2cW2a5R1KidMGNByqPKn6nJDDnHtazoere' -] - -UISignalQueue = Queue.Queue() -addressGeneratorQueue = Queue.Queue() - - -class StoppableThread(threading.Thread): - """Base class for application threads with stopThread method""" - name = None - logger = logging.getLogger('default') - - def __init__(self, name=None): - if name: - self.name = name - super(StoppableThread, self).__init__(name=self.name) - self.stop = threading.Event() - self._stopped = False - random.seed() - self.logger.info('Init thread %s', self.name) - - def stopThread(self): - """Stop the thread""" - self._stopped = True - self.stop.set() - - -class FakeAddressGenerator(StoppableThread): - """A thread for creating fake addresses""" - name = "addressGenerator" - - def stopThread(self): - try: - addressGeneratorQueue.put(("stopThread", "data")) - except: - pass - super(FakeAddressGenerator, self).stopThread() - - def run(self): - """ - Process the requests for addresses generation - from `.queues.addressGeneratorQueue` - """ - while state.shutdown == 0: - queueValue = addressGeneratorQueue.get() - streamNumber = 1 - try: - if len(BMConfigParser().addresses()) > 0: - address = fake_addresses[len(BMConfigParser().addresses())] - else: - address = fake_addresses[0] - - label = queueValue[3] - BMConfigParser().add_section(address) - BMConfigParser().set(address, 'label', label) - BMConfigParser().set(address, 'enabled', 'true') - BMConfigParser().set( - address, 'privencryptionkey', '5KUayt1aPSsNWsxMJnk27kv79wfRE3cWVPYLazyLQc752bXfQP3') - BMConfigParser().save() - - UISignalQueue.put(( - 'updateStatusBar', "" - )) - UISignalQueue.put(('writeNewAddressToTable', ( - label, address, streamNumber))) - addressGeneratorQueue.task_done() - except IndexError: - self.logger.error( - 'Program error: you can only create 5 fake addresses') diff --git a/src/mock/main.py b/src/mock/main.py deleted file mode 100644 index 0a5fbb84..00000000 --- a/src/mock/main.py +++ /dev/null @@ -1,29 +0,0 @@ -"""This module is for thread start.""" - -from pybitmessage import state -from pybitmessage.bitmessagekivy.mpybit import NavigateApp -from class_addressGenerator import FakeAddressGenerator -# from class_sqlThread import sqlThread - - -def main(): - """main method for starting threads""" - if state.enableObjProc: - # Start the address generation thread - addressGeneratorThread = FakeAddressGenerator() - # close the main program even if there are threads left - addressGeneratorThread.daemon = True - addressGeneratorThread.start() - - # sqlLookup = sqlThread() - # DON'T close the main program even if there are threads left. - # The closeEvent should command this thread to exit gracefully. - # sqlLookup.daemon = False - # sqlLookup.start() - - state.kivyapp = NavigateApp() - state.kivyapp.run() - - -if __name__ == '__main__': - main()