Beispiel #1
0
 def get_server_info(self):
     ''' Gets the server info'''
     from biicode.server.conf import BII_DOWNLOAD_URL
     from biicode.server.conf import BII_GREET_MSG
     si = ServerInfo(message=BII_GREET_MSG)
     si.last_compatible = BII_LAST_COMPATIBLE_CLIENT
     si.download_url = BII_DOWNLOAD_URL
     return si
Beispiel #2
0
 def model_serialization_test(self):
     server_info = ServerInfo(ClientVersion("0.9"), 'Hey!', "0.9")
     now = datetime.datetime.utcnow()
     info = UpdateInfo(server_info, now)
     seri = info.serialize()
     dese = UpdateInfo.deserialize(seri)
     self.assertEquals(info, dese)
Beispiel #3
0
    def test_save_and_load(self):
        server_info = ServerInfo(ClientVersion("0.9"), 'Hey!', "0.9")
        now = datetime.datetime.utcnow()
        info = UpdateInfo(server_info, now)
        self.store.save(info)

        self.assertTrue(os.path.exists(self.file_path))

        update_info = self.store.load()

        self.assertEquals(update_info.server_info, server_info)
        self.assertEquals(update_info.time, info.time)
Beispiel #4
0
    def test_higher_version_ok(self):

        server_info = ServerInfo(version="0.9",
                                 message='Hey!',
                                 last_compatible="0.5")
        self.biiapi.get_server_info = Mock(return_value=server_info)

        manager = UpdatesManager(self.store, self.biiapi, ClientVersion("1.0"))

        last_time = self._save_info(manager, server_info,
                                    datetime.timedelta(days=-365))

        biiout = OutputStream()
        manager.check_for_updates(biiout)
        self.assert_not_in_response(biiout,
                                    "There is a new version of biicode")
Beispiel #5
0
 def check_for_updates(self, biiout):
     """Calls get_server_info in remote api if TIME_BETWEEN_CHECKS have passed"""
     update_info = self.store.load()
     server_info = update_info.server_info
     last_check = update_info.time
     now = datetime.datetime.utcnow()
     # If we don't have information yet or its old information
     if last_check is None or (last_check +
                               self.time_between_checks) <= now:
         try:
             server_info = self.biiapi.get_server_info()
         except Exception as e:  # Don't care if we can't call. continue working
             logger.debug(e)
             server_info = ServerInfo()
         self.store.save(UpdateInfo(server_info, now))
     # If have not passed TIME_BETWEEN_CHECKS, process old server_info
     return self._process_server_info(server_info, biiout)
Beispiel #6
0
    def test_not_checked_ever(self):
        """Even out client is obsolete its not time to check yet"""
        server_info = ServerInfo("0.9", 'Hey!', "0.9")
        self.biiapi.get_server_info = Mock(return_value=server_info)

        obsolete_client = ClientVersion("0.8")
        manager = UpdatesManager(
            self.store,
            self.biiapi,
            obsolete_client,
            time_between_checks=datetime.timedelta(days=10))
        self.assertRaises(ObsoleteClient, manager.check_for_updates,
                          self.user_io.out)
        self.assertEquals(self.user_io.out.stream.buf, "")
        # Information is saved
        self.assertEquals(self.store.load().server_info, server_info)

        # Now check again (not needed), it must be the same info and get_server_info
        # was not called
        self.biiapi.get_server_info.call_count = 0
        self.assertRaises(ObsoleteClient, manager.check_for_updates,
                          self.user_io.out)
        self.assertEquals(self.biiapi.get_server_info.call_count, 0)
        self.assertEquals(self.store.load().server_info, server_info)
 def test_serialize(self):
     sut = ServerInfo()
     sut.download_url = 'https://www.biicode.com/downloads'
     serial = sut.serialize()
     deserialized = ServerInfo.deserialize(serial)
     self.assertEquals(sut, deserialized)
Beispiel #8
0
 def deserialize(data):
     """Loads date and server info"""
     server_info = ServerInfo.deserialize(data[0])
     time = datetime.datetime.strptime(data[1], UpdateInfo.DATE_PATTERN)
     return UpdateInfo(server_info, time)
Beispiel #9
0
 def deserialize(data):
     """Loads date and server info"""
     server_info = ServerInfo.deserialize(data[0])
     time = datetime.datetime.strptime(data[1], UpdateInfo.DATE_PATTERN)
     return UpdateInfo(server_info, time)