def test_mig_37_valid_tor_hs_key(self): self._initStartDB(36) from globaleaks.db.migrations import update_37 t = update_37.TOR_DIR update_37.TOR_DIR = GLSettings.db_path pk_path = os.path.join(update_37.TOR_DIR, 'private_key') hn_path = os.path.join(update_37.TOR_DIR, 'hostname') shutil.copy(os.path.join(helpers.DATA_DIR, 'tor/private_key'), pk_path) shutil.copy(os.path.join(helpers.DATA_DIR, 'tor/hostname'), hn_path) ret = update_db() self.assertEqual(ret, None) new_uri = GLSettings.make_db_uri( os.path.join(GLSettings.db_path, GLSettings.db_file_name)) store = Store(create_database(new_uri)) hs = config.NodeFactory(store).get_val('onionservice') pk = config.PrivateFactory(store).get_val('tor_onion_key') self.assertEqual('lftx7dbyvlc5txtl.onion', hs) with open(os.path.join(helpers.DATA_DIR, 'tor/ephemeral_service_key')) as f: saved_key = f.read().strip() self.assertEqual(saved_key, pk) store.close() shutil.rmtree(GLSettings.db_path) update_37.TOR_DIR = t
def _test_missing_config(self, store): self.assertEqual(True, config.is_cfg_valid(store)) p = config.Config('private', 'smtp_password', 'XXXX') p.var_group = u'outside' store.add(p) self.assertEqual(False, config.is_cfg_valid(store)) node = config.NodeFactory(store) c = node.get_cfg(u'hostname') store.remove(c) store.commit() self.assertEqual(False, node.db_corresponds()) # Delete all of the vars in Private Factory prv = config.PrivateFactory(store) store.execute('DELETE FROM config WHERE var_group = "private"') self.assertEqual(False, prv.db_corresponds()) ntfn = config.NotificationFactory(store) c = config.Config('notification', 'server', 'guarda.giochi.con.occhi') c.var_name = u'anextravar' store.add(c) self.assertEqual(False, ntfn.db_corresponds()) config.update_defaults(store) self.assertEqual(True, config.is_cfg_valid(store))
def wizard(store, request, language): models.db_delete(store, l10n.EnabledLanguage, l10n.EnabledLanguage.name != language) node = config.NodeFactory(store) if node.get_val(u'wizard_done'): log.err("DANGER: Wizard already initialized!") raise errors.ForbiddenOperation node._query_group() node.set_val(u'name', request['node']['name']) node.set_val(u'default_language', language) node.set_val(u'wizard_done', True) node_l10n = l10n.NodeL10NFactory(store) node_l10n.set_val(u'description', language, request['node']['description']) node_l10n.set_val(u'header_title_homepage', language, request['node']['name']) profiles.load_profile(store, request['profile']) context = db_create_context(store, request['context'], language) request['receiver']['username'] = u'recipient' request['receiver']['contexts'] = [context.id] request['receiver']['language'] = language db_create_receiver_user(store, request['receiver'], language) admin_dict = { 'username': u'admin', 'password': request['admin']['password'], 'role': u'admin', 'state': u'enabled', 'deletable': False, 'name': u'Admin', 'public_name': u'Admin', 'description': u'', 'mail_address': request['admin']['mail_address'], 'language': language, 'password_change_needed': False, 'pgp_key_remove': False, 'pgp_key_fingerprint': '', 'pgp_key_public': '', 'pgp_key_expiration': datetime_null() } db_create_admin_user(store, admin_dict, language) db_refresh_memory_variables(store)
def wizard(store, request, language): models.db_delete(store, l10n.EnabledLanguage, l10n.EnabledLanguage.name != language) node = config.NodeFactory(store) if node.get_val(u'wizard_done'): log.err("DANGER: Wizard already initialized!") raise errors.ForbiddenOperation node._query_group() node.set_val(u'name', request['node_name']) node.set_val(u'default_language', language) node.set_val(u'wizard_done', True) node_l10n = l10n.NodeL10NFactory(store) node_l10n.set_val(u'header_title_homepage', language, request['node_name']) profiles.load_profile(store, request['profile']) receiver_desc = models.User().dict(language) receiver_desc['username'] = u'recipient' receiver_desc['name'] = receiver_desc['public_name'] = request['receiver_name'] receiver_desc['mail_address'] = request['receiver_mail_address'] receiver_desc['language'] = language receiver_desc['role'] =u'receiver' receiver_desc['deletable'] = True receiver_desc['pgp_key_remove'] = False _, receiver = db_create_receiver_user(store, receiver_desc, language) context_desc = models.Context().dict(language) context_desc['name'] = u'Default' context_desc['receivers'] = [receiver.id] context = db_create_context(store, context_desc, language) admin_desc = models.User().dict(language) admin_desc['username'] = u'admin' admin_desc['password'] = request['admin_password'] admin_desc['name'] = admin_desc['public_name'] = request['admin_name'] admin_desc['mail_address'] = request['admin_mail_address'] admin_desc['language'] = language admin_desc['role'] =u'admin' admin_desc['deletable'] = False admin_desc['pgp_key_remove'] = False admin_desc['password_change_needed'] = False db_create_admin_user(store, admin_desc, language) db_refresh_memory_variables(store)
def test_trim_value_to_range(self): store = Store(create_database(GLSettings.db_uri)) nf = config.NodeFactory(store) fake_cfg = nf.get_cfg(u'wbtip_timetolive') self.assertRaises(errors.InvalidModelInput, fake_cfg.set_v, 3650) fake_cfg.value = {'v': 3650} store.commit() MigrationBase.trim_value_to_range(nf, u'wbtip_timetolive') self.assertEqual(nf.get_val(u'wbtip_timetolive'), 365 * 2)
def postconditions_36(self): new_uri = GLSettings.make_db_uri( os.path.join(GLSettings.db_path, GLSettings.db_file_name)) store = Store(create_database(new_uri)) hs = config.NodeFactory(store).get_val(u'onionservice') pk = config.PrivateFactory(store).get_val(u'tor_onion_key') self.assertEqual('lftx7dbyvlc5txtl.onion', hs) with open(os.path.join(helpers.DATA_DIR, 'tor/ephemeral_service_key')) as f: saved_key = f.read().strip() self.assertEqual(saved_key, pk) store.close()