def start(self, ks_type, ks_path, ks_passwd):
        if self.__status == CS_STARTED:
            raise Exception('IdepositboxClient is already started')

        self.__config.refresh()
        config = self.__config
        try:
            sm_class = SM_TYPES_MAP.get(ks_type, None)
            if not sm_class:
                raise Exception('Unsupported key chain type: "%s"' % ks_type)
            security_provider = sm_class(ks_path, ks_passwd)
            self.__last_ks_path = ks_path
            self.__last_ks_type = ks_type

            self.__nibbler = Nibbler(config.fabnet_hostname, security_provider, \
                                config.parallel_put_count, config.parallel_get_count, \
                                config.data_dir, config.cache_size)

            try:
                registered = self.__nibbler.is_registered()
            except Exception, err:
                logger.error(err)
                raise Exception('Service %s does not respond! Please, '\
                                'ensure that network is configured correctly'%config.fabnet_hostname)

            if not registered:
                try:
                    self.__nibbler.register_user(
                    )  #FIXME: this is dangerous call! user should accept this case...
                except Exception, err:
                    logger.error('Register user error: %s' % err)
                    raise Exception('User does not registered in service')
    def test01_nibbler_init(self):
        remove_dir(tmp('client_base_test'))
        os.makedirs(tmp('client_base_test/dynamic_cache'))
        os.makedirs(tmp('client_base_test/static_cache'))

        security_manager = FileBasedSecurityManager(CLIENT_KS_PATH, PASSWD)
        nibbler = Nibbler('127.0.0.1',
                          security_manager,
                          cache_dir=tmp('client_base_test'))
        nibbler.fabnet_gateway.fri_client = MockedFriClient()
        BaseNibblerTest.NIBBLER_INST = nibbler
        with self.assertRaises(NoJournalFoundException):
            nibbler.start()

        self.assertEqual(nibbler.is_registered(), False)
        nibbler.register_user()
        nibbler.start()