From 7d34f8f1a1f86fa1d9f4c885bcf1a1bcd2d7982c Mon Sep 17 00:00:00 2001 From: meejah Date: Mon, 10 Sep 2018 21:39:50 -0600 Subject: [PATCH] test case when safe_load fails --- src/allmydata/test/test_introducer.py | 30 +++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/allmydata/test/test_introducer.py b/src/allmydata/test/test_introducer.py index dabc8ec26..6b991f186 100644 --- a/src/allmydata/test/test_introducer.py +++ b/src/allmydata/test/test_introducer.py @@ -3,6 +3,7 @@ import os, re, itertools from base64 import b32decode import json from socket import socket, AF_INET +from mock import Mock, patch from twisted.trial import unittest from twisted.internet import defer, address @@ -20,11 +21,17 @@ from allmydata.introducer.server import IntroducerService, FurlFileConflictError from allmydata.introducer.common import get_tubid_string_from_ann, \ get_tubid_string, sign_to_foolscap, unsign_from_foolscap, \ UnknownKeyError -from allmydata.node import create_node_dir +from allmydata.node import ( + create_node_dir, + read_config, +) # the "new way" to create introducer node instance from allmydata.introducer.server import create_introducer from allmydata.web import introweb -from allmydata.client import create_client +from allmydata.client import ( + create_client, + create_introducer_clients, +) from allmydata.util import pollmixin, keyutil, idlib, fileutil, iputil, yamlutil import allmydata.test.common_util as testutil @@ -50,6 +57,25 @@ class Node(testutil.SignalMixin, testutil.ReallyEqualMixin, unittest.TestCase): yield create_introducer(basedir) self.assertTrue(os.path.exists(basedir)) + def test_introducer_clients_unloadable(self): + """ + If introducers.yaml exists but we can't read it for some reason + we'll ignore it. + """ + basedir = "introducer.IntroducerNode.test_introducer_clients_unloadable" + os.mkdir(basedir) + # just mocking the yaml failure, as "yamlutil.safe_load" only + # returns None on some platforms + + with patch("allmydata.client.yamlutil") as p: + p.safe_load = Mock(return_value=None) + + fake_tub = Mock() + config = read_config(basedir, "portnum") + + ic = create_introducer_clients(config, fake_tub) + self.assertEqual([], ic) + @defer.inlineCallbacks def test_furl(self): basedir = "introducer.IntroducerNode.test_furl"