예제 #1
0
    def post(self):
        request_data = self.get_argument_dict(must_keys=['participate_id'])
        participate_id = request_data['participate_id']
        main_service = MainService()
        result = main_service.indiana_number_new(participate_id)

        return self.utctime_to_localtime(result)
예제 #2
0
 def setUp(self):
     self._fake_user_repository = FakeUserRepository()
     self._fake_service = MainService(self._fake_user_repository)
     self._fake_service.create(TestMainService.TEST_USER_NAME,
                               TestMainService.TEST_USER_PASSWORD)
     self._fake_service.logout()
     self._remove_files()
예제 #3
0
    def post(self):
        request_data = self.get_argument_dict(must_keys=['version_code'])
        version_code = request_data['version_code']
        main_service = MainService()
        result = main_service.app_version_check(version_code)

        return self.utctime_to_localtime(result)
예제 #4
0
    def post(self):
        request_data = self.get_argument_dict(
            must_keys=['instance_id', 'participate_id'])
        instance_id = request_data['instance_id']
        participate_id = request_data['participate_id']
        main_service = MainService()
        result = main_service.indiana_detail(instance_id, participate_id)

        return self.utctime_to_localtime(result)
예제 #5
0
    def post(self):
        request_data = self.get_argument_dict(must_keys=['user_id'])
        limit = request_data.get('limit', 10)
        offset = request_data.get('offset', 1)
        start_id = request_data.get("start_id", None)
        user_id = request_data['user_id']
        main_service = MainService()
        result = main_service.indiana_record(limit, offset, user_id, start_id)

        return self.utctime_to_localtime(result)
예제 #6
0
    def post(self):
        request_data = self.get_argument_dict()
        limit = request_data.get('limit', 10)
        offset = request_data.get('offset', 1)
        status = request_data.get('status', '')
        start_id = request_data.get("start_id", None)
        main_service = MainService()
        result = main_service.game_instance_info_list(limit, offset, status,
                                                      start_id)

        return self.utctime_to_localtime(result)
예제 #7
0
def main():
    """Call this to start the program.
    """
    window = Tk()
    window.title("Arithmetician")
    database = Database()

    if not database.is_db_connection_ok():
        print(
            f"Failed to connect to database: {Config.DB_FILENAME}. Exiting..")
        return

    gui = UI(window, MainService(UserRepository(database)))
    gui.start()
    window.geometry("350x500")
    window.mainloop()
예제 #8
0
    def test_logging_in_as_user_loads_previous_settings_from_file(self):
        database = Database()
        database.init_database()
        main_service = MainService(UserRepository(database))
        main_service.create(TestMainService.TEST_USER_NAME,
                            TestMainService.TEST_USER_PASSWORD)
        user = main_service.show_current_user()
        self.assertNotEqual(
            user.settings.get_setting(user.settings.ADD_TIMELIMIT), 5555)
        user.settings.set_setting(user.settings.ADD_TIMELIMIT, 5555)
        main_service.save_settings()
        main_service.logout()

        main_service.login(TestMainService.TEST_USER_NAME,
                           TestMainService.TEST_USER_PASSWORD)
        user = main_service.show_current_user()
        self.assertEqual(
            user.settings.get_setting(user.settings.ADD_TIMELIMIT), 5555)
예제 #9
0
class TestMainService(unittest.TestCase):
    TEST_USER_NAME = "testuser"
    TEST_USER_PASSWORD = "******"

    def setUp(self):
        self._fake_user_repository = FakeUserRepository()
        self._fake_service = MainService(self._fake_user_repository)
        self._fake_service.create(TestMainService.TEST_USER_NAME,
                                  TestMainService.TEST_USER_PASSWORD)
        self._fake_service.logout()
        self._remove_files()

    def _remove_file(self, file):
        if os.path.exists(file):
            os.remove(file)

    def _remove_files(self):
        test_users_path = Config.USER_CSV_PATH
        self._remove_file(
            os.path.join(test_users_path,
                         f"{TestMainService.TEST_USER_NAME}.csv"))
        self._remove_file(os.path.join(test_users_path, "newuser.csv"))

    def test_cannot_log_in_with_nonexistant_user(self):
        with self.assertRaises(InvalidUserException):
            self._fake_service.login("nosuchuser", "password")

    def test_can_log_in_with_correct_password(self):
        try:
            self._fake_service.login(TestMainService.TEST_USER_NAME,
                                     TestMainService.TEST_USER_PASSWORD)
        except:
            self.assertTrue(False)

        user = self._fake_service.show_current_user()
        self.assertIsNotNone(user)
        self.assertEqual(TestMainService.TEST_USER_NAME, user.username)

    def test_cannot_log_in_with_incorrect_password(self):
        with self.assertRaises(InvalidPasswordException):
            self._fake_service.login(TestMainService.TEST_USER_NAME,
                                     "wrong_password")

    def test_can_create_new_user(self):
        try:
            self._fake_service.create("newuser", "password")
        except:
            self.assertTrue(False)

        created_user = self._fake_service.show_current_user()
        self.assertIsNotNone(created_user)
        self.assertEqual(created_user.username, "newuser")

    def test_cannot_create_user_with_small_name(self):
        with self.assertRaises(InvalidUserException):
            self._fake_service.create("a", "password")

    def test_cannot_create_user_with_spaces_in_password(self):
        with self.assertRaises(InvalidPasswordException):
            self._fake_service.create("newuser", "p a ss")

    def test_cannot_create_user_with_small_password(self):
        with self.assertRaises(InvalidPasswordException):
            self._fake_service.create("newuser", "a")

    def test_cannot_create_same_user_again(self):
        with self.assertRaises(InvalidUserException):
            self._fake_service.create(TestMainService.TEST_USER_NAME,
                                      "password")

    def test_logout_does_nothing_if_no_user(self):
        try:
            self._fake_service.logout()
        except:
            self.assertTrue(False)

        self.assertIsNone(self._fake_service.show_current_user())

    def test_cannot_create_user_with_nonascii_username(self):
        with self.assertRaises(InvalidUserException):
            self._fake_service.create("123 a1", "password")

    def test_saving_user_settings_calls_user_repository(self):
        self.assertEqual(0, self._fake_user_repository.settings_saved())
        self._fake_service.login(TestMainService.TEST_USER_NAME,
                                 TestMainService.TEST_USER_PASSWORD)
        self._fake_service.save_settings()
        self.assertEqual(1, self._fake_user_repository.settings_saved())

    def test_logging_in_as_user_loads_previous_settings_from_file(self):
        database = Database()
        database.init_database()
        main_service = MainService(UserRepository(database))
        main_service.create(TestMainService.TEST_USER_NAME,
                            TestMainService.TEST_USER_PASSWORD)
        user = main_service.show_current_user()
        self.assertNotEqual(
            user.settings.get_setting(user.settings.ADD_TIMELIMIT), 5555)
        user.settings.set_setting(user.settings.ADD_TIMELIMIT, 5555)
        main_service.save_settings()
        main_service.logout()

        main_service.login(TestMainService.TEST_USER_NAME,
                           TestMainService.TEST_USER_PASSWORD)
        user = main_service.show_current_user()
        self.assertEqual(
            user.settings.get_setting(user.settings.ADD_TIMELIMIT), 5555)
예제 #10
0
    def post(self):
        # request_data = self.get_argument_dict()
        main_service = MainService()
        result = main_service.main_page()

        return self.utctime_to_localtime(result)