Beispiel #1
0
def test_calculate_total_steps_6_need_to_join_grid_and_1_folder(fake_gateway):
    sr = SetupRunner([fake_gateway])
    settings = {
        "introducer": "pb://introducer.other",
        "magic-folders": {"FolderOne": {"code": "URI+URI"}},
    }
    assert sr.calculate_total_steps(settings) == 6
Beispiel #2
0
def test_decode_icon_b64decode(tmpdir):
    sr = SetupRunner([])
    data = b'dGVzdDEyMzQ1'  # b64encode(b'test12345')
    dest = str(tmpdir.join('icon.png'))
    sr.decode_icon(data, dest)
    with open(dest) as f:
        assert f.read() == 'test12345'
Beispiel #3
0
def test_decode_icon_emit_got_icon_signal(qtbot, tmpdir):
    sr = SetupRunner([])
    data = b'dGVzdDEyMzQ1'  # b64encode(b'test12345')
    dest = str(tmpdir.join('icon.png'))
    with qtbot.wait_signal(sr.got_icon) as blocker:
        sr.decode_icon(data, dest)
    assert blocker.args == [dest]
Beispiel #4
0
def test_fetch_icon(monkeypatch, tmpdir):
    sr = SetupRunner([])
    dest = str(tmpdir.join("icon.png"))
    monkeypatch.setattr("treq.get", fake_get)
    monkeypatch.setattr("treq.content", lambda _: b"0")
    yield sr.fetch_icon("http://example.org/icon.png", dest)
    with open(dest) as f:
        assert f.read() == "0"
Beispiel #5
0
def test_fetch_icon_emit_got_icon_signal(monkeypatch, qtbot, tmpdir):
    sr = SetupRunner([])
    dest = str(tmpdir.join('icon.png'))
    monkeypatch.setattr('treq.get', fake_get)
    monkeypatch.setattr('treq.content', lambda _: b'0')
    with qtbot.wait_signal(sr.got_icon) as blocker:
        yield sr.fetch_icon('http://example.org/icon.png', dest)
    assert blocker.args == [dest]
Beispiel #6
0
def test_fetch_icon(monkeypatch, tmpdir):
    sr = SetupRunner([])
    dest = str(tmpdir.join('icon.png'))
    monkeypatch.setattr('treq.get', fake_get)
    monkeypatch.setattr('treq.content', lambda _: b'0')
    yield sr.fetch_icon('http://example.org/icon.png', dest)
    with open(dest) as f:
        assert f.read() == '0'
Beispiel #7
0
def test_join_folders_emit_joined_folders_signal(monkeypatch, qtbot, tmpdir):
    monkeypatch.setattr('gridsync.tahoe.Tahoe.link', lambda a, b, c, d: None)
    sr = SetupRunner([])
    sr.gateway = Tahoe(str(tmpdir.mkdir('TestGrid')))
    sr.gateway.rootcap = 'URI:rootcap'
    folders_data = {'TestFolder': {'code': 'URI:1+URI:2'}}
    with qtbot.wait_signal(sr.joined_folders) as blocker:
        yield sr.join_folders(folders_data)
    assert blocker.args == [['TestFolder']]
Beispiel #8
0
def test_ensure_recovery_write_settings(tmpdir):
    nodedir = str(tmpdir.mkdir("TestGrid"))
    os.makedirs(os.path.join(nodedir, "private"))
    sr = SetupRunner([])
    sr.gateway = Tahoe(nodedir)
    settings = {"nickname": "TestGrid", "rootcap": "URI:test"}
    yield sr.ensure_recovery(settings)
    with open(os.path.join(nodedir, "private", "settings.json")) as f:
        assert json.loads(f.read()) == settings
Beispiel #9
0
def test_join_folders_emit_joined_folders_signal(monkeypatch, qtbot, tmpdir):
    monkeypatch.setattr("gridsync.tahoe.Tahoe.link", lambda a, b, c, d: None)
    sr = SetupRunner([])
    sr.gateway = Tahoe(str(tmpdir.mkdir("TestGrid")))
    sr.gateway.rootcap = "URI:rootcap"
    folders_data = {"TestFolder": {"code": "URI:1+URI:2"}}
    with qtbot.wait_signal(sr.joined_folders) as blocker:
        yield sr.join_folders(folders_data)
    assert blocker.args == [["TestFolder"]]
Beispiel #10
0
def test_ensure_recovery_write_settings(tmpdir):
    nodedir = str(tmpdir.mkdir('TestGrid'))
    os.makedirs(os.path.join(nodedir, 'private'))
    sr = SetupRunner([])
    sr.gateway = Tahoe(nodedir)
    settings = {'nickname': 'TestGrid', 'rootcap': 'URI:test'}
    yield sr.ensure_recovery(settings)
    with open(os.path.join(nodedir, 'private', 'settings.json')) as f:
        assert json.loads(f.read()) == settings
Beispiel #11
0
 def got_message(self, message):
     self.update_progress("Reading invitation...")  # 3
     message = validate_settings(message, self.gateways, self)
     self.setup_runner = SetupRunner(self.gateways, self.use_tor)
     if not message.get('magic-folders'):
         self.setup_runner.grid_already_joined.connect(
             self.on_grid_already_joined)
     self.setup_runner.update_progress.connect(self.update_progress)
     self.setup_runner.joined_folders.connect(self.set_joined_folders)
     self.setup_runner.done.connect(self.on_done)
     self.setup_runner.run(message)
Beispiel #12
0
def test_join_grid_emit_update_progress_signal(monkeypatch, qtbot, tmpdir):
    monkeypatch.setattr('gridsync.setup.select_executable', lambda:
                        (None, None))
    monkeypatch.setattr('gridsync.setup.config_dir',
                        str(tmpdir.mkdir('config_dir')))
    monkeypatch.setattr('gridsync.setup.Tahoe', MagicMock())
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid'}
    with qtbot.wait_signal(sr.update_progress) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == ["Connecting to TestGrid..."]
Beispiel #13
0
def test_calculate_total_steps_6_need_to_join_grid_and_1_folder(fake_gateway):
    sr = SetupRunner([fake_gateway])
    settings = {
        'introducer': 'pb://introducer.other',
        'magic-folders': {
            'FolderOne': {
                'code': 'URI+URI'
            }
        }
    }
    assert sr.calculate_total_steps(settings) == 6
Beispiel #14
0
 def verify_settings(self, settings, from_wormhole=True):
     settings = validate_settings(settings, self.known_gateways, self,
                                  from_wormhole)
     self.setup_runner = SetupRunner(self.known_gateways)
     steps = self.setup_runner.calculate_total_steps(settings) + 2
     self.page_2.progressbar.setMaximum(steps)
     self.setup_runner.grid_already_joined.connect(self.on_already_joined)
     self.setup_runner.update_progress.connect(self.update_progress)
     self.setup_runner.got_icon.connect(self.load_service_icon)
     self.setup_runner.done.connect(self.on_done)
     d = self.setup_runner.run(settings)
     d.addErrback(self.handle_failure)
Beispiel #15
0
def test_run_call_scan_rootcap_after_join_folders(monkeypatch):
    fake_gateway = Mock()
    fake_gateway.monitor.scan_rootcap = Mock()
    monkeypatch.setattr(
        "gridsync.setup.SetupRunner.get_gateway", lambda x, y, z: fake_gateway
    )
    monkeypatch.setattr("gridsync.setup.SetupRunner.join_grid", Mock())
    monkeypatch.setattr("gridsync.setup.SetupRunner.ensure_recovery", Mock())
    monkeypatch.setattr("gridsync.setup.SetupRunner.join_folders", Mock())
    sr = SetupRunner([])
    yield sr.run({"nickname": "TestGrid", "magic-folders": {"TestFolder": {}}})
    assert fake_gateway.monitor.scan_rootcap.call_count == 1
Beispiel #16
0
def test_join_grid_emit_got_icon_signal_nickname_least_authority_s4(
        monkeypatch, qtbot, tmpdir):
    monkeypatch.setattr('gridsync.setup.select_executable', lambda:
                        (None, None))
    monkeypatch.setattr('gridsync.setup.config_dir',
                        str(tmpdir.mkdir('config_dir')))
    monkeypatch.setattr('gridsync.setup.Tahoe', MagicMock())
    sr = SetupRunner([])
    settings = {'nickname': 'Least Authority S4'}
    with qtbot.wait_signal(sr.got_icon) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == [resource('leastauthority.com.icon')]
Beispiel #17
0
def test_join_grid_emit_got_icon_signal_icon_base64(monkeypatch, qtbot,
                                                    tmpdir):
    tmp_config_dir = str(tmpdir.mkdir('config_dir'))
    monkeypatch.setattr('gridsync.setup.select_executable', lambda:
                        (None, None))
    monkeypatch.setattr('gridsync.setup.config_dir', tmp_config_dir)
    monkeypatch.setattr('gridsync.setup.Tahoe', MagicMock())
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid', 'icon_base64': 'dGVzdDEyMzQ1'}
    with qtbot.wait_signal(sr.got_icon) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == [os.path.join(tmp_config_dir, '.icon.tmp')]
Beispiel #18
0
def test_ensure_recovery_create_rootcap(monkeypatch, tmpdir):
    nodedir = str(tmpdir.mkdir('TestGrid'))
    os.makedirs(os.path.join(nodedir, 'private'))
    monkeypatch.setattr('gridsync.tahoe.Tahoe.create_rootcap', lambda _: 'URI')
    monkeypatch.setattr('gridsync.tahoe.Tahoe.upload', lambda x, y: 'URI:2')

    def fake_link(_, dircap, name, childcap):
        assert (dircap, name, childcap) == ('URI', 'settings.json', 'URI:2')
    monkeypatch.setattr('gridsync.tahoe.Tahoe.link', fake_link)
    sr = SetupRunner([])
    sr.gateway = Tahoe(nodedir)
    sr.gateway.rootcap = 'URI'
    settings = {'nickname': 'TestGrid'}
    yield sr.ensure_recovery(settings)
Beispiel #19
0
def test_run_join_grid_use_tor(monkeypatch):
    monkeypatch.setattr('gridsync.tor.get_tor', lambda _: 'FakeTorObject')
    monkeypatch.setattr('gridsync.setup.SetupRunner.get_gateway',
                        lambda x, y, z: None)
    monkeypatch.setattr('gridsync.setup.SetupRunner.join_grid',
                        lambda x, y: None)
    monkeypatch.setattr('gridsync.setup.SetupRunner.ensure_recovery',
                        lambda x, y: None)
    monkeypatch.setattr('gridsync.setup.SetupRunner.join_folders',
                        lambda x, y: None)
    sr = SetupRunner([], use_tor=True)
    settings = {'nickname': 'TestGrid', 'magic-folders': {'TestFolder': {}}}
    yield sr.run(settings)
    assert settings['hide-ip']
Beispiel #20
0
def test_join_grid_emit_got_icon_signal_icon_base64(
    monkeypatch, qtbot, tmpdir
):
    tmp_config_dir = str(tmpdir.mkdir("config_dir"))
    monkeypatch.setattr(
        "gridsync.setup.select_executable", lambda: (None, None)
    )
    monkeypatch.setattr("gridsync.setup.config_dir", tmp_config_dir)
    monkeypatch.setattr("gridsync.setup.Tahoe", MagicMock())
    sr = SetupRunner([])
    settings = {"nickname": "TestGrid", "icon_base64": "dGVzdDEyMzQ1"}
    with qtbot.wait_signal(sr.got_icon) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == [os.path.join(tmp_config_dir, ".icon.tmp")]
Beispiel #21
0
def test_run_emit_done_signal(monkeypatch, qtbot):
    monkeypatch.setattr('gridsync.setup.SetupRunner.get_gateway',
                        lambda x, y, z: 'GatewayObj')
    monkeypatch.setattr('gridsync.setup.SetupRunner.join_grid',
                        lambda x, y: None)
    monkeypatch.setattr('gridsync.setup.SetupRunner.ensure_recovery',
                        lambda x, y: None)
    monkeypatch.setattr('gridsync.setup.SetupRunner.join_folders',
                        lambda x, y: None)
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid', 'magic-folders': {'TestFolder': {}}}
    with qtbot.wait_signal(sr.done) as blocker:
        yield sr.run(settings)
    assert blocker.args == ['GatewayObj']
Beispiel #22
0
def test_join_grid_no_emit_icon_signal_exception(monkeypatch, qtbot, tmpdir):
    monkeypatch.setattr('gridsync.setup.select_executable', lambda:
                        (None, None))
    monkeypatch.setattr('gridsync.setup.config_dir',
                        str(tmpdir.mkdir('config_dir')))
    monkeypatch.setattr('gridsync.setup.Tahoe', MagicMock())
    monkeypatch.setattr('treq.get', fake_get)
    monkeypatch.setattr('treq.content', lambda _: b'0')
    monkeypatch.setattr('gridsync.setup.SetupRunner.fetch_icon',
                        MagicMock(side_effect=Exception()))
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid', 'icon_url': 'https://gridsync.io/icon'}
    with qtbot.assert_not_emitted(sr.got_icon):
        yield sr.join_grid(settings)
Beispiel #23
0
def test_join_grid_emit_got_icon_signal_icon_url(monkeypatch, qtbot, tmpdir):
    tmp_config_dir = str(tmpdir.mkdir('config_dir'))
    os.makedirs(os.path.join(tmp_config_dir, 'TestGrid'))
    monkeypatch.setattr('gridsync.setup.select_executable', lambda:
                        (None, None))
    monkeypatch.setattr('gridsync.setup.config_dir', tmp_config_dir)
    monkeypatch.setattr('gridsync.setup.Tahoe', MagicMock())
    monkeypatch.setattr('treq.get', fake_get)
    monkeypatch.setattr('treq.content', lambda _: b'0')
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid', 'icon_url': 'https://gridsync.io/icon'}
    with qtbot.wait_signal(sr.got_icon) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == [os.path.join(tmp_config_dir, '.icon.tmp')]
Beispiel #24
0
def test_run_join_grid(monkeypatch):
    monkeypatch.setattr('gridsync.setup.SetupRunner.get_gateway',
                        lambda x, y, z: None)

    def fake_join_grid(*_):
        assert True

    monkeypatch.setattr('gridsync.setup.SetupRunner.join_grid', fake_join_grid)
    monkeypatch.setattr('gridsync.setup.SetupRunner.ensure_recovery',
                        lambda x, y: None)
    monkeypatch.setattr('gridsync.setup.SetupRunner.join_folders',
                        lambda x, y: None)
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid', 'magic-folders': {'TestFolder': {}}}
    yield sr.run(settings)
Beispiel #25
0
def test_join_grid_emit_update_progress_signal_via_tor(
    monkeypatch, qtbot, tmpdir
):
    monkeypatch.setattr(
        "gridsync.setup.select_executable", lambda: (None, None)
    )
    monkeypatch.setattr(
        "gridsync.setup.config_dir", str(tmpdir.mkdir("config_dir"))
    )
    monkeypatch.setattr("gridsync.setup.Tahoe", MagicMock())
    sr = SetupRunner([], use_tor=True)
    settings = {"nickname": "TestGrid"}
    with qtbot.wait_signal(sr.update_progress) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == ["Connecting to TestGrid via Tor..."]
Beispiel #26
0
def test_join_grid_emit_got_icon_signal_icon_url(monkeypatch, qtbot, tmpdir):
    tmp_config_dir = str(tmpdir.mkdir("config_dir"))
    os.makedirs(os.path.join(tmp_config_dir, "TestGrid"))
    monkeypatch.setattr(
        "gridsync.setup.select_executable", lambda: (None, None)
    )
    monkeypatch.setattr("gridsync.setup.config_dir", tmp_config_dir)
    monkeypatch.setattr("gridsync.setup.Tahoe", MagicMock())
    monkeypatch.setattr("treq.get", fake_get)
    monkeypatch.setattr("treq.content", lambda _: b"0")
    sr = SetupRunner([])
    settings = {"nickname": "TestGrid", "icon_url": "https://gridsync.io/icon"}
    with qtbot.wait_signal(sr.got_icon) as blocker:
        yield sr.join_grid(settings)
    assert blocker.args == [os.path.join(tmp_config_dir, ".icon.tmp")]
Beispiel #27
0
def test_join_grid_storage_servers(monkeypatch, tmpdir):
    monkeypatch.setattr('gridsync.setup.select_executable', lambda:
                        (None, None))
    monkeypatch.setattr('gridsync.setup.config_dir',
                        str(tmpdir.mkdir('config_dir')))
    monkeypatch.setattr('gridsync.setup.Tahoe', MagicMock())

    def fake_add_storage_servers(*_):
        assert True

    monkeypatch.setattr('gridsync.tahoe.Tahoe.add_storage_servers',
                        fake_add_storage_servers)
    sr = SetupRunner([])
    settings = {'nickname': 'TestGrid', 'storage': {'test': 'test'}}
    yield sr.join_grid(settings)
Beispiel #28
0
def test_ensure_recovery_create_rootcap(monkeypatch, tmpdir):
    nodedir = str(tmpdir.mkdir("TestGrid"))
    os.makedirs(os.path.join(nodedir, "private"))
    monkeypatch.setattr("gridsync.tahoe.Tahoe.create_rootcap", lambda _: "URI")
    monkeypatch.setattr("gridsync.tahoe.Tahoe.upload", lambda x, y: "URI:2")

    def fake_link(_, dircap, name, childcap):
        assert (dircap, name, childcap) == ("URI", "settings.json", "URI:2")

    monkeypatch.setattr("gridsync.tahoe.Tahoe.link", fake_link)
    sr = SetupRunner([])
    sr.gateway = Tahoe(nodedir)
    sr.gateway.rootcap = "URI"
    settings = {"nickname": "TestGrid"}
    yield sr.ensure_recovery(settings)
Beispiel #29
0
class InviteReceiver(QObject):

    # Wormhole
    got_welcome = Signal(dict)
    # got_code = Signal(str)
    got_introduction = Signal()
    got_message = Signal(dict)
    closed = Signal()

    # SetupRunner
    grid_already_joined = Signal(str)
    update_progress = Signal(str)
    got_icon = Signal(str)
    client_started = Signal(object)
    joined_folders = Signal(list)
    done = Signal(object)

    def __init__(self, known_gateways=None, use_tor=False):
        super(InviteReceiver, self).__init__()
        self.known_gateways = known_gateways
        self.use_tor = use_tor

        self.setup_runner = SetupRunner(known_gateways, use_tor)
        self.setup_runner.grid_already_joined.connect(
            self.grid_already_joined.emit
        )
        self.setup_runner.update_progress.connect(self.update_progress.emit)
        self.setup_runner.got_icon.connect(self.got_icon.emit)
        self.setup_runner.client_started.connect(self.client_started.emit)
        self.setup_runner.joined_folders.connect(self.joined_folders.emit)
        self.setup_runner.done.connect(self.done.emit)

        self.wormhole = Wormhole(use_tor)
        self.wormhole.got_welcome.connect(self.got_welcome.emit)
        self.wormhole.got_introduction.connect(self.got_introduction.emit)
        self.wormhole.got_message.connect(self.got_message.emit)
        self.wormhole.closed.connect(self.closed.emit)

    def cancel(self):
        self.wormhole.close()

    @inlineCallbacks
    def _run_setup(self, settings, from_wormhole):
        settings = validate_settings(
            settings, self.known_gateways, None, from_wormhole
        )
        yield self.setup_runner.run(settings)

    @inlineCallbacks
    def receive(self, code, settings=None):
        # TODO: Calculate/emit total steps
        if settings:
            yield self._run_setup(settings, from_wormhole=False)
        elif code.split("-")[0] == "0":
            settings = load_settings_from_cheatcode(code[2:])
            if settings:
                yield self._run_setup(settings, from_wormhole=False)
        else:
            settings = yield self.wormhole.receive(code)
            yield self._run_setup(settings, from_wormhole=True)
Beispiel #30
0
def test_run_emit_grid_already_joined_signal(monkeypatch, qtbot):
    monkeypatch.setattr(
        "gridsync.setup.SetupRunner.get_gateway", lambda x, y, z: Mock()
    )
    monkeypatch.setattr(
        "gridsync.setup.SetupRunner.join_grid", lambda x, y: None
    )
    monkeypatch.setattr(
        "gridsync.setup.SetupRunner.ensure_recovery", lambda x, y: None
    )
    monkeypatch.setattr(
        "gridsync.setup.SetupRunner.join_folders", lambda x, y: None
    )
    sr = SetupRunner([])
    settings = {"nickname": "TestGrid"}
    with qtbot.wait_signal(sr.grid_already_joined) as blocker:
        yield sr.run(settings)
    assert blocker.args == ["TestGrid"]