Skip to content
Snippets Groups Projects
Select Git revision
  • 102f1a8cfc7647a4ada802b4602699a00bfc926c
  • master default protected
  • dev
  • appimage
  • fix_gitlab
  • fixappveyor
  • gitlab
  • fix_ci
  • fix_dbus_error
  • fix_ci_osx
  • sakia020
  • fix_travis#1105
  • feature/backend
  • check_uniq_node_by_endpoints
  • qt5.7
  • feature/agent_architecture
  • translations
  • pyqt5.6
  • qtwebengine
  • pyinstaller
  • landscape
  • 0.53.2
  • 0.53.1
  • 0.53.0
  • 0.52.0
  • 0.51.1
  • 0.51.0
  • 0.50.5
  • 0.50.4
  • 0.50.3
  • 0.50.2
  • 0.50.1
  • 0.50.0
  • 0.33.0rc7
  • 0.33.0rc6
  • 0.33.0rc5
  • 0.33.0rc4
  • 0.33.0rc3
  • 0.33.0rc2
  • 0.33.0rc1
  • 0.32.10post1
41 results

transactions_tab.py

Blame
  • test_tools.py 4.69 KiB
    # Copyright  2016-2025 Maël Azimi <m.a@moul.re>
    #
    # Silkaj is free software: you can redistribute it and/or modify
    # it under the terms of the GNU Affero General Public License as published by
    # the Free Software Foundation, either version 3 of the License, or
    # (at your option) any later version.
    #
    # Silkaj is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    # GNU Affero General Public License for more details.
    #
    # You should have received a copy of the GNU Affero General Public License
    # along with Silkaj. If not, see <https://www.gnu.org/licenses/>.
    
    import pytest
    import rich_click as click
    
    from silkaj.wot import tools as w_tools
    
    pubkey_titi_tata = "B4RoF48cTxzmsQDB3UjodKdZ2cVymKSKzgiPVRoMeA88"
    pubkey_toto_tutu = "totoF48cTxzmsQDB3UjodKdZ2cVymKSKzgiPVRoMeA88"
    
    pubkey_titi_tata_checksum = "B4RoF48cTxzmsQDB3UjodKdZ2cVymKSKzgiPVRoMeA88:9iP"
    
    
    def identity_card(uid, timestamp):
        return {
            "uid": uid,
            "meta": {"timestamp": timestamp},
        }
    
    
    titi = identity_card(
        "titi",
        "590358-000156C5620946D1D63DAF82BF3AA735CE0B3518D59274171C88A7DBA4C906BC",
    )
    tata = identity_card(
        "tata",
        "210842-000000E7AAC79A07F487B33A48B3217F8A1F0A31CDB42C5DFC5220A20665B6B1",
    )
    toto = identity_card(
        "toto",
        "189601-0000011405B5C96EA69C1273370E956ED7887FA56A75E3EFDF81E866A2C49FD9",
    )
    tutu = identity_card(
        "tutu",
        "389601-0000023405B5C96EA69C1273370E956ED7887FA56A75E3EFDF81E866A2C49FD9",
    )
    
    
    def patched_lookup_one(pubkey_uid):
        return [
            {
                "pubkey": pubkey_titi_tata,
                "uids": [titi],
                "signed": [],
            },
        ]
    
    
    def patched_lookup_two(pubkey_uid):
        return [
            {
                "pubkey": pubkey_titi_tata,
                "uids": [titi, tata],
                "signed": [],
            },
        ]
    
    
    def patched_lookup_three(pubkey_uid):
        return [
            {
                "pubkey": pubkey_titi_tata,
                "uids": [titi, tata],
                "signed": [],
            },
            {
                "pubkey": pubkey_toto_tutu,
                "uids": [toto],
                "signed": [],
            },
        ]
    
    
    def patched_lookup_four(pubkey_uid):
        return [
            {
                "pubkey": pubkey_titi_tata,
                "uids": [titi, tata],
                "signed": [],
            },
            {
                "pubkey": pubkey_toto_tutu,
                "uids": [toto, tutu],
                "signed": [],
            },
        ]
    
    
    def patched_lookup_five(pubkey_uid):
        return [
            {
                "pubkey": pubkey_titi_tata,
                "uids": [titi],
                "signed": [],
            },
            {
                "pubkey": pubkey_toto_tutu,
                "uids": [titi],
                "signed": [],
            },
        ]
    
    
    def patched_prompt_titi(message):
        return "00"
    
    
    def patched_prompt_tata(message):
        return "01"
    
    
    def patched_prompt_toto(message):
        return "10"
    
    
    def patched_prompt_tutu(message):
        return "11"
    
    
    @pytest.mark.parametrize(
        ("selected_uid", "pubkey", "patched_prompt", "patched_lookup"),
        [
            ("titi", pubkey_titi_tata, patched_prompt_titi, patched_lookup_one),
            ("titi", pubkey_titi_tata_checksum, patched_prompt_titi, patched_lookup_one),
            ("tata", pubkey_titi_tata, patched_prompt_tata, patched_lookup_two),
            ("toto", pubkey_toto_tutu, patched_prompt_toto, patched_lookup_three),
            ("tutu", pubkey_toto_tutu, patched_prompt_tutu, patched_lookup_four),
            ("titi", pubkey_toto_tutu, patched_prompt_toto, patched_lookup_five),
        ],
    )
    def test_choose_identity(
        selected_uid,
        pubkey,
        patched_prompt,
        patched_lookup,
        capsys,
        monkeypatch,
    ):
        monkeypatch.setattr(w_tools, "wot_lookup", patched_lookup)
        monkeypatch.setattr(click, "prompt", patched_prompt)
        idty_card, get_pubkey, signed = w_tools.choose_identity(pubkey)
        expected_pubkey = pubkey.split(":")[0]
        assert expected_pubkey == get_pubkey
        assert selected_uid == idty_card["uid"]
    
        # Check whether the table is not displayed in case of one identity
        # Check it is displayed for more than one identity
        # Check the uids and ids are in
        captured = capsys.readouterr()
        lookups = patched_lookup("")
    
        # only one pubkey and one uid on this pubkey
        if len(lookups) == 1 and len(lookups[0]["uids"]) == 1:
            assert not captured.out
    
        # many pubkeys or many uid on one pubkey
        else:
            # if more than one pubkey, there should be a "10" numbering
            if len(lookups) > 1:
                assert " 10 " in captured.out
            for lookup in lookups:
                if len(lookup["uids"]) > 1:
                    assert " 01 " in captured.out
                for uid in lookup["uids"]:
                    assert uid["uid"] in captured.out