annotate tests/e2e/libervia-cli/test_libervia-cli.py @ 4242:8acf46ed7f36

frontends: remote control implementation: This is the frontends common part of remote control implementation. It handle the creation of WebRTC session, and management of inputs. For now the reception use freedesktop.org Desktop portal, and works mostly with Wayland based Desktop Environments. rel 436
author Goffi <goffi@goffi.org>
date Sat, 11 May 2024 13:52:43 +0200
parents f59e9421a650
children 4cd4922de876
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python3
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
3480
7550ae9cfbac Renamed the project from "Salut à Toi" to "Libervia":
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
3 # Libervia: an XMPP client
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3429
diff changeset
4 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
3962
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
19 import json
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 import os
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 import shutil
3946
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
22 from time import sleep
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
23
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import sh
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
25 from sh import li
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26
3962
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
27 import pytest
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
28 from libervia.backend.plugins.plugin_sec_oxps import NS_OXPS
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
29 from libervia.backend.plugins.plugin_sec_pte import NS_PTE
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
30 from libervia.backend.plugins.plugin_xep_0277 import NS_ATOM
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
31 from libervia.backend.tools.common import uri
3962
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
32
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
33
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
34 if os.getenv("LIBERVIA_TEST_ENV_E2E") is None:
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 pytest.skip(
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 "skipping end-to-end tests, we are not in a test environment",
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 allow_module_level=True
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 )
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
40
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 pytestmark = pytest.mark.usefixtures("test_profiles")
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
42
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
43
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 class TestInstall:
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
45
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
46 def test_li_can_run(self):
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
47 li("--version")
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
49
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
50 class TestLiberviaCliAccount:
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
52 def test_create_and_delete(self, li_json):
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 """Create an account in-band, connect it, then delete it and its profile"""
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
54 li.account.create(
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 "test_create@server1.test",
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
56 "test",
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 profile="test_create",
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 host="server1.test"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 )
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
60 profiles = li_json.profile.list()
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 assert "test_create" in profiles
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
62 li.profile.connect(connect=True, profile="test_create")
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
63 li.account.delete(profile="test_create", force=True)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
64 li.profile.delete("test_create", force=True)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
65 profiles = li_json.profile.list()
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
66 assert "test_create" not in profiles
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
67
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
68
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
69 @pytest.mark.usefixtures("pubsub_nodes")
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
70 class TestLiberviaCliPubsub:
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
71
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 def test_node_create_info_delete(self):
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
73 node_name = "tmp_node"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 with pytest.raises(sh.ErrorReturnCode_16):
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 # the node should not exist
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
76 li.pubsub.node.info(node=node_name)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 try:
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
78 li.pubsub.node.create(node=node_name)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
79 # if node exist as expected, following command won't raise an exception
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
80 metadata = li.pubsub.node.info(node=node_name)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 assert len(metadata.strip())
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 finally:
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
83 li.pubsub.node.delete(node=node_name, force=True)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
84
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
85 with pytest.raises(sh.ErrorReturnCode_16):
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 # the node should not exist anymore
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
87 li.pubsub.node.info(node=node_name)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
88
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
89 def test_set_get_delete_purge(self, li_elt):
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
90 content = "test item"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
91 payload = f"<test>{content}</test>"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
92
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
93 # we create 3 items and check them
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
94 item1_id = li.pubsub.set(node="test", quiet=True, _in=payload)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
95 item2_id = li.pubsub.set(node="test", quiet=True, _in=payload)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
96 item3_id = li.pubsub.set(node="test", quiet=True, _in=payload)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
97 parsed_elt = li_elt.pubsub.get(node="test", item=item1_id)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
98 payload = parsed_elt.firstChildElement()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
99 assert payload.name == 'test'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
100 assert str(payload) == content
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
101 parsed_elt = li_elt.pubsub.get(node="test", item=item2_id)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
102 payload = parsed_elt.firstChildElement()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
103 assert payload.name == 'test'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
104 assert str(payload) == content
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
105 parsed_elt = li_elt.pubsub.get(node="test", item=item3_id)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
106 payload = parsed_elt.firstChildElement()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
107 assert payload.name == 'test'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
108 assert str(payload) == content
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
109
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
110 # deleting first item should work
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
111 li.pubsub.delete(node="test", item=item1_id, force=True)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
112 with pytest.raises(sh.ErrorReturnCode_16):
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
113 li.pubsub.get(node="test", item=item1_id)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
114
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
115 # there must be a least item2 and item3 in the node
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
116 node_items = li_elt.pubsub.get(node="test")
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
117 assert len(list(node_items.elements())) >= 2
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
118
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
119 # after purge, node must be empty
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
120 li.pubsub.node.purge(node="test", force=True)
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
121 node_items = li_elt.pubsub.get(node="test")
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
122 assert len(list(node_items.elements())) == 0
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
123
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
124 def test_edit(self, editor, li_elt):
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
125 content = "original item"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
126 payload = f"<test>{content}</test>"
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
127 item_id = li.pubsub.set(node="test", quiet=True, _in=payload)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
128 editor.set_filter('content.replace("original", "edited")')
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
129 li.pubsub.edit(node="test", item=item_id, _env=editor.env)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
130 assert "original item" in editor.original_content
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
131 parsed_elt = li_elt.pubsub.get(node="test", item=item_id)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
132 edited_payload = parsed_elt.firstChildElement()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
133 expected_edited_content = content.replace("original", "edited")
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
134 assert edited_payload.name == 'test'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 assert str(edited_payload) == expected_edited_content
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
136
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
137 def test_affiliations(self, li_json):
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
138 affiliations = li_json.pubsub.affiliations()
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 assert affiliations["test"] == "owner"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
140
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
141 def test_uri(self):
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
142 built_uri = li.pubsub.uri(
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
143 service="pubsub.example.net", node="some_node"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
144 ).strip()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
145 assert built_uri == "xmpp:pubsub.example.net?;node=some_node"
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
146 built_uri = li.pubsub.uri(
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
147 service="pubsub.example.net", node="some_node", item="some_item"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
148 ).strip()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
149 assert built_uri == "xmpp:pubsub.example.net?;node=some_node;item=some_item"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
150
3674
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
151 def test_cache_search(self, li_json):
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
152 """A Full-Text Search query can be done"""
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
153 sk_txt = "this is a blog post about Slovakia"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
154 fr_txt = "this is a blog post about France"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
155 nc_txt = "this is a blog post about New Caledonia"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
156 au_txt = "this is a blog post about Australia"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
157 li.blog.set(
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
158 "-t", "travel", "-t", "europe",
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
159 _in=sk_txt,
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
160 syntax="markdown"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
161 )
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
162 li.blog.set(
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
163 "-t", "travel", "-t", "europe",
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
164 _in=fr_txt,
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
165 syntax="markdown"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
166 )
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
167 li.blog.set(
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
168 "-t", "travel", "-t", "south pacific",
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
169 _in=nc_txt,
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
170 syntax="markdown"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
171 )
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
172 li.blog.set(
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
173 "-t", "travel", "-t", "south pacific",
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
174 _in="this is a blog post about Australia",
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
175 title=au_txt,
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
176 syntax="markdown"
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
177 )
3769
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
178 # we get the blog to activate the cache for it
3674
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
179 li.blog.get(max_items=1)
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
180 # FTS
3769
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
181 found = []
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
182 for __ in range(5):
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
183 found = li_json.pubsub.cache.search(
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
184 type="blog", fts='Slovakia OR "New Caledonia"'
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
185 )
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
186 if found:
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
187 break
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
188 else:
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
189 # retrieving blog triggers the caching, but it's done in parallel
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
190 # thus we may have nothing in cache yet
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
191 sleep(0.5)
3674
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
192 assert len(found) == 2
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
193 assert all(i["content"] in (sk_txt, nc_txt) for i in found)
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
194 # search by field
3769
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
195 found = li_json.pubsub.cache.search(
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
196 "-F", "tags", "overlap", "travel", type="blog"
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
197 )
3674
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
198 assert len(found) == 4
3769
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
199 found = li_json.pubsub.cache.search(
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
200 "-F", "tags", "overlap", "europe", type="blog"
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
201 )
3674
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
202 assert len(found) == 2
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
203 assert all(i["content"] in (sk_txt, fr_txt) for i in found)
3769
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
204 found = li_json.pubsub.cache.search(
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
205 "-F", "tags", "ioverlap", "SOUTH PACIFIC", type="blog"
a75874df92b8 tests (e2e/cli/cache_search): make the test more resilient:
Goffi <goffi@goffi.org>
parents: 3731
diff changeset
206 )
3674
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
207 assert all(i["content"] in (nc_txt, au_txt) for i in found)
eeb8be32d644 tests (e2e/CLI): tests for Pubsub Cache Search
Goffi <goffi@goffi.org>
parents: 3658
diff changeset
208
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
209
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
210 class TestLiberviaCliBlog:
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
211 MICROBLOG_NS = "urn:xmpp:microblog:0"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
212
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
213 def test_set_get(self, li_json):
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
214 li.blog.set(_in="markdown **bold** [link](https://example.net)")
3731
7e51cfc36d4e tests (e2e/CLI/set_get): fix RSM request:
Goffi <goffi@goffi.org>
parents: 3674
diff changeset
215 item_data = li_json.blog.get(max=1, before="")
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
216 item = item_data[0][0]
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
217 metadata = item_data[1]
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
218 assert metadata['service'] == "account1@server1.test"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
219 assert metadata['node'] == self.MICROBLOG_NS
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
220 assert metadata['rsm'].keys() <= {"first", "last", "index", "count"}
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
221 item_id = item['id']
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3974
diff changeset
222 expected_uri = uri.build_xmpp_uri(
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
223 'pubsub', subtype="microblog", path="account1@server1.test",
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
224 node=self.MICROBLOG_NS, item=item_id
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
225 )
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
226 assert item['uri'] == expected_uri
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
227 assert item['content_xhtml'] == (
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
228 '<div><p>markdown <strong>bold</strong> '
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
229 '<a href="https://example.net">link</a></p></div>'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
230 )
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
231 assert isinstance(item['published'], int)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
232 assert isinstance(item['updated'], int)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
233 assert isinstance(item['comments'], list)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
234 assert isinstance(item['tags'], list)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
235 assert item['author'] == 'account1'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
236 assert item['author_jid'] == 'account1@server1.test'
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
237
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
238 def test_edit(self, editor, li_json):
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
239 payload_md = "content in **markdown**"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
240 editor.set_filter(repr(payload_md))
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
241 li.blog.edit(_env=editor.env)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
242 assert len(editor.original_content) == 0
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
243 assert editor.new_content == payload_md
3658
9e491b2bab88 test (e2e/cli): use `max_items` instead of `max` when retrieving blog items:
Goffi <goffi@goffi.org>
parents: 3498
diff changeset
244 items_data = li_json.blog.get(max_items=1)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
245 last_item = items_data[0][0]
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
246 last_item_id = last_item['id']
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
247 assert last_item['content'] == "content in markdown"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
248 assert last_item['content_xhtml'] == (
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
249 "<div><p>content in <strong>markdown</strong></p></div>"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
250 )
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
251 editor.set_filter('f"{content} extended"')
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
252 li.blog.edit("--last-item", _env=editor.env)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
253 assert editor.original_content == payload_md
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
254 assert editor.new_content == f"{payload_md} extended"
3658
9e491b2bab88 test (e2e/cli): use `max_items` instead of `max` when retrieving blog items:
Goffi <goffi@goffi.org>
parents: 3498
diff changeset
255 items_data = li_json.blog.get(max_items=1)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
256 last_item = items_data[0][0]
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
257 # we check that the id hasn't been modified
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
258 assert last_item['id'] == last_item_id
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
259 assert last_item['content'] == "content in markdown extended"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
260 assert last_item['content_xhtml'] == (
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
261 "<div><p>content in <strong>markdown</strong> extended</p></div>"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
262 )
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
263
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
264
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
265 class TestLiberviaCliFile:
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
266
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
267 def test_upload_get(self, fake_file):
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
268 source_file = fake_file.size(10240)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
269 source_file_hash = fake_file.get_source_hash(source_file)
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
270 upload_url = li.file.upload(source_file).strip()
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
271
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
272 dest_file = fake_file.new_dest_file()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
273 try:
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
274 li.file.get(upload_url, dest_file=dest_file)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
275 dest_file_hash = fake_file.get_dest_hash(dest_file)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
276 finally:
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
277 dest_file.unlink()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
278
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
279 assert source_file_hash == dest_file_hash
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
280
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
281 def test_send_receive(self, fake_file):
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
282 source_file = fake_file.size(10240)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
283 source_file_hash = fake_file.get_source_hash(source_file)
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
284 send_cmd = li.file.send(source_file, "account1@server2.test", _bg=True)
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
285 dest_path = fake_file.dest_files / "test_send_receive"
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
286 dest_path.mkdir()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
287 try:
3498
d78b5eae912a tests: update following names change
Goffi <goffi@goffi.org>
parents: 3480
diff changeset
288 li.file.receive(
3415
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
289 "account1@server1.test", profile="account1_s2", path=dest_path)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
290 dest_file = dest_path / source_file.name
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
291 dest_file_hash = fake_file.get_dest_hash(dest_file)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
292 finally:
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
293 shutil.rmtree(dest_path)
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
294 send_cmd.wait()
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
295
814e118d9ef3 tests: end-2-end tests first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
296 assert source_file_hash == dest_file_hash
3946
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
297
4236
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
298 def test_send_receive_webrtc(self, fake_file):
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
299 source_file = fake_file.size(10240)
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
300 source_file_hash = fake_file.get_source_hash(source_file)
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
301 send_cmd = li.file.send(
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
302 source_file, "account1@server2.test", webrtc=True, _bg=True
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
303 )
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
304 dest_path = fake_file.dest_files / "test_send_receive"
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
305 dest_path.mkdir()
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
306 try:
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
307 li.file.receive(
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
308 "account1@server1.test", profile="account1_s2", path=dest_path)
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
309 dest_file = dest_path / source_file.name
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
310 dest_file_hash = fake_file.get_dest_hash(dest_file)
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
311 finally:
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
312 shutil.rmtree(dest_path)
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
313 send_cmd.wait()
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
314
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
315 assert source_file_hash == dest_file_hash
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
316
f59e9421a650 test (unit/cli): Add a file send/receive test for WebRTC:
Goffi <goffi@goffi.org>
parents: 4227
diff changeset
317
3946
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
318
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
319 class TestE2EEncryption:
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
320
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
321 def test_pubsub_encryption_oxps(self, li_elt):
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
322 secret_blog = "this is a secret blog post"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
323 node = "e2ee_blog"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
324 li.blog.set(_in=secret_blog, node="e2ee_blog", item="test_e2ee", encrypt=True)
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
325
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
326 # the item should be transparently decrypted
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
327 parsed_decrypted = li_elt.pubsub.get(
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
328 node=node, item="test_e2ee", no_cache=True
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
329 )
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
330 entry_elt = parsed_decrypted.firstChildElement()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
331 assert entry_elt.name == "entry"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
332 assert entry_elt.uri == NS_ATOM
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
333 assert secret_blog in parsed_decrypted.toXml()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
334
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
335 # with --no-decrypt, we should have the encrypted item
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
336 parsed_ori_item = li_elt.pubsub.get(
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
337 node=node, item="test_e2ee", no_decrypt=True, no_cache=True
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
338 )
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
339 encrypted_elt = parsed_ori_item.firstChildElement()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
340 assert encrypted_elt.name == "encrypted"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
341 assert encrypted_elt.uri == NS_OXPS
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
342 # the body must not be readable in plain text
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
343 assert secret_blog not in parsed_ori_item.toXml()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
344
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
345 def test_pubsub_secrets_sharing_oxps(self, li_elt):
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
346 secret_blog = "this is a secret blog post"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
347 node="secret_sharing"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
348
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
349 li.blog.set(_in=secret_blog, node=node, item="test_e2ee", encrypt=True)
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
350
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
351 # the item must not be decrypted for account1_s2 (secret is not known)
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
352 parsed_item = li_elt.pubsub.get(
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
353 service="account1@server1.test", node=node, item="test_e2ee", no_cache=True,
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
354 profile="account1_s2"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
355 )
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
356 encrypted_elt = parsed_item.firstChildElement()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
357 assert encrypted_elt.name == "encrypted"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
358 assert encrypted_elt.uri == NS_OXPS
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
359 # the body must not be readable in plain text
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
360 assert secret_blog not in parsed_item.toXml()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
361
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
362 # we share the secrets
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
363 li.pubsub.secret.share("account1@server2.test", service="account1@server1.test", node=node)
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
364
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
365 # and get the item again
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
366 parsed_item = li_elt.pubsub.get(
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
367 service="account1@server1.test", node=node, item="test_e2ee", no_cache=True,
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
368 profile="account1_s2"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
369 )
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
370 # now it should be decrypted
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
371 entry_elt = parsed_item.firstChildElement()
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
372 assert entry_elt.name == "entry"
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
373 assert entry_elt.uri == NS_ATOM
f2a5936f2496 tests (e2e/cli): add test for pubsub encryption:
Goffi <goffi@goffi.org>
parents: 3769
diff changeset
374 assert secret_blog in parsed_item.toXml()
3962
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
375
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
376 def test_pubsub_signature(self, li_json):
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
377 """A pubsub item can be signed, and the signature can be verified"""
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
378 body = "this message is signed"
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
379 service="account1@server1.test"
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
380 node ="blog_signing"
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
381 item="signed_item"
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
382 li.blog.set(_in=body, service=service, node=node, item=item, sign=True)
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
383 attachments = li_json.pubsub.attachments.get(
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
384 service=service, node=node, item=item
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
385 )
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
386 assert len(attachments) == 1
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
387 attachment = attachments[0]
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
388 assert attachment["from"] == "account1@server1.test"
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
389 signature_json = attachment["signature"]
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
390 sign_data = li_json.pubsub.signature.check(
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
391 json.dumps(signature_json), service=service, node=node, item=item,
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
392 )
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
393 assert sign_data["signer"] == "account1@server1.test"
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
394 assert sign_data["validated"] == True
2d9d0b77e82b tests (e2e/cli): add a test for Pubsub Signing:
Goffi <goffi@goffi.org>
parents: 3946
diff changeset
395 assert all(t == "undecided" for t in sign_data["trusts"].values())
3971
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
396
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
397 def test_jingle_encrypted_transport_jet(self, fake_file):
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
398 """A file is sent and received properly with JET OMEMO"""
4227
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
399 # FIXME: transport should be checked to see if content is actually encrypted.
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
400 # Maybe we can use tcpdump?
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
401 li.encryption.start("account1@server2.test", name="omemo_legacy")
3971
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
402 source_file = fake_file.size(10240)
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
403 source_file_hash = fake_file.get_source_hash(source_file)
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
404 send_cmd = li.file.send(
4227
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
405 source_file, "account1@server2.test", encrypt=True, _bg=True,
3971
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
406 )
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
407 dest_path = fake_file.dest_files / "test_send_receive"
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
408 dest_path.mkdir()
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
409 try:
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
410 li.file.receive(
4227
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
411 "account1@server1.test", profile="account1_s2", path=dest_path,
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
412 )
3971
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
413 dest_file = dest_path / source_file.name
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
414 dest_file_hash = fake_file.get_dest_hash(dest_file)
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
415 finally:
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
416 shutil.rmtree(dest_path)
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
417 send_cmd.wait()
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
418
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
419 assert source_file_hash == dest_file_hash
9b1d74a6b48c tests (e2e/cli): add tests for JET:
Goffi <goffi@goffi.org>
parents: 3962
diff changeset
420 li.encryption.stop("account1@server2.test")
3974
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
421
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
422 def test_pubsub_targeted_encryption_pte(self, li_elt):
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
423 """An item is encrypted for specific recipients"""
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
424 secret_blog = "this is a secret blog post"
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
425 node = "e2ee_blog"
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
426 item = "test_pte"
4227
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
427 li.encryption.start("account1@server2.test", name="omemo")
3974
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
428 li.encryption.start(
4227
dfccc90cacc6 tests: fix and update tests:
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
429 "account1@server1.test", name="omemo", profile="account1_s2"
3974
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
430 )
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
431 li.blog.set(
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
432 _in=secret_blog, node="e2ee_blog", item=item,
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
433 encrypt_for="account1@server2.test"
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
434 )
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
435
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
436 # the item should be transparently decrypted
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
437 parsed_decrypted = li_elt.pubsub.get(
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
438 service="account1@server1.test", node=node, item=item, no_cache=True,
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
439 profile="account1_s2"
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
440 )
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
441 entry_elt = parsed_decrypted.firstChildElement()
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
442 assert entry_elt.name == "entry"
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
443 assert entry_elt.uri == NS_ATOM
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
444 assert secret_blog in parsed_decrypted.toXml()
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
445
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
446 # with --no-decrypt, we should have the encrypted item
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
447 parsed_ori_item = li_elt.pubsub.get(
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
448 node=node, item=item, no_decrypt=True, no_cache=True
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
449 )
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
450 encrypted_elt = parsed_ori_item.firstChildElement()
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
451 assert encrypted_elt.name == "encrypted"
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
452 assert encrypted_elt.uri == NS_PTE
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
453 # the body must not be readable in plain text
5e3b983ab2c6 tests (e2e/cli): test for Pubsub Targeted Encryption:
Goffi <goffi@goffi.org>
parents: 3971
diff changeset
454 assert secret_blog not in parsed_ori_item.toXml()