Skip to content

Commit 8781778

Browse files
authored
Merge pull request #547 from singnet/functional-tests-update
Functional tests update
2 parents ef18a62 + 6d6841c commit 8781778

37 files changed

Lines changed: 758 additions & 1341 deletions

.github/workflows/master.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,4 @@ jobs:
7171
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
7272
# sh -ex ./snet/cli/test/utils/run_all_functional.sh
7373
python3 ./snet/cli/test/functional_tests/test_entry_point.py
74+
python3 ./snet/cli/test/functional_tests/func_tests.py

.github/workflows/test.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: tests_functional_tests_update
2+
on:
3+
push:
4+
branches: [ "functional-tests-update" ]
5+
# pull_request:
6+
# branches: [ "development" ]
7+
workflow_dispatch:
8+
9+
jobs:
10+
run_tests_functional_tests_update:
11+
runs-on: ubuntu-latest
12+
container: node:20-bookworm
13+
steps:
14+
15+
- name: install packs
16+
run: |
17+
apt update
18+
apt install -y libudev-dev libusb-1.0-0-dev curl jq
19+
apt install -y python3-pip python3.11-venv
20+
21+
- name: clone repo
22+
uses: actions/checkout@v3
23+
24+
- name: install pip packages
25+
run: |
26+
pip3 install -r requirements.txt --break-system-packages
27+
# pip3 install nose --break-system-packages
28+
# pip3 uninstall pyreadline --break-system-packages
29+
# pip3 install pyreadline3 --break-system-packages
30+
31+
- name: install snet-cli
32+
run: |
33+
# ./scripts/blockchain install
34+
pip3 install -e . --break-system-packages
35+
36+
# - name: install platform-contracts
37+
# run: |
38+
# cd ..
39+
# git clone https://github.com/singnet/platform-contracts.git
40+
# cd platform-contracts
41+
# npm install
42+
# npm install ganache-cli
43+
# npm run-script compile
44+
45+
# - name: build example service
46+
# run: |
47+
# git clone https://github.com/singnet/example-service.git
48+
# cd example-service
49+
# pip3 install -r requirements.txt --break-system-packages
50+
# sh buildproto.sh
51+
52+
# - name: unit tests
53+
# run: |
54+
# cd ./snet/cli/test
55+
# nosetests -v --with-doctest
56+
57+
- name: functional tests for cli
58+
run: |
59+
export SNET_TEST_WALLET_PRIVATE_KEY=${{ secrets.PRIV_KEY }}
60+
export SNET_TEST_INFURA_KEY=${{ secrets.INF_KEY }}
61+
export SNET_TEST_WALLET_ADDRESS=${{ secrets.ADDR }}
62+
export FORMER_SNET_TEST_INFURA_KEY=${{ secrets.FORM_INF_KEY }}
63+
export PIP_BREAK_SYSTEM_PACKAGES=1
64+
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
65+
# sh -ex ./snet/cli/test/utils/run_all_functional.sh
66+
python3 ./snet/cli/test/functional_tests/test_entry_point.py

snet/cli/arguments.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,7 @@ def add_mpe_service_options(parser):
11531153
p.add_argument("name", help="Name of the contributor")
11541154
p.add_argument("email_id", help="Email of the contributor")
11551155

1156-
p = subparsers.add_parser("metadata-remove-contributor", help="Add contributor")
1156+
p = subparsers.add_parser("metadata-remove-contributor", help="Remove contributor")
11571157
p.set_defaults(fn="metadata_remove_contributor")
11581158
add_p_metadata_file_opt(p)
11591159
p.add_argument("email_id", help="Email of the contributor")

snet/cli/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def set_session_field(self, key, value, out_f):
106106
self.set_identity_field(session_identity, key, value)
107107
print("set {}={} for identity={}".format(key, value, session_identity), file=out_f)
108108
else:
109-
all_keys = get_session_network_keys() + get_session_identity_keys() + ["default_ipfs_endpoint"]
109+
all_keys = get_session_keys()
110110
raise Exception("key {} not in {}".format(key, all_keys))
111111

112112
def unset_session_field(self, key, out_f):
Lines changed: 8 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import warnings
22
import argcomplete
33
import unittest
4-
import unittest.mock as mock
5-
import shutil
64
import os
75

8-
from snet.cli.commands.commands import BlockchainCommand
9-
106
with warnings.catch_warnings():
117
# Suppress the eth-typing package`s warnings related to some new networks
128
warnings.filterwarnings("ignore", "Network .* does not have a valid ChainId. eth-typing should be "
@@ -15,6 +11,12 @@
1511

1612
from snet.cli.config import Config
1713

14+
INFURA_KEY = os.environ.get("SNET_TEST_INFURA_KEY")
15+
PRIVATE_KEY = os.environ.get("SNET_TEST_WALLET_PRIVATE_KEY")
16+
ADDR = os.environ.get("SNET_TEST_WALLET_ADDRESS")
17+
INFURA = f"https://sepolia.infura.io/v3/{INFURA_KEY}"
18+
IDENTITY = "sepolia"
19+
1820

1921
class StringOutput:
2022
def __init__(self):
@@ -32,102 +34,18 @@ def execute(args_list, parser, conf):
3234
except TypeError:
3335
args = parser.parse_args(argv + ["-h"])
3436
f = StringOutput()
35-
getattr(args.cmd(conf, args, out_f = f), args.fn)()
37+
getattr(args.cmd(conf, args, out_f=f), args.fn)()
3638
return f.text
3739
except Exception as e:
3840
raise
3941

42+
4043
class BaseTest(unittest.TestCase):
4144
def setUp(self):
4245
self.conf = Config()
4346
self.parser = arguments.get_root_parser(self.conf)
4447
argcomplete.autocomplete(self.parser)
4548

4649

47-
class TestCommands(BaseTest):
48-
def test_balance_output(self):
49-
result = execute(["account", "balance"], self.parser, self.conf)
50-
assert len(result.split("\n")) >= 4
51-
52-
def test_balance_address(self):
53-
result = execute(["account", "balance"], self.parser, self.conf)
54-
assert result.split("\n")[0].split()[1] == "0xe5D1fA424DE4689F9d2687353b75D7a8987900fD"
55-
56-
class TestDepositWithdraw(BaseTest):
57-
def setUp(self):
58-
super().setUp()
59-
self.balance_1: int
60-
self.balance_2: int
61-
self.amount = 0.1
62-
63-
def test_deposit(self):
64-
result = execute(["account", "balance"], self.parser, self.conf)
65-
self.balance_1 = float(result.split("\n")[3].split()[1])
66-
execute(["account", "deposit", f"{self.amount}", "-y", "-q"], self.parser, self.conf)
67-
result = execute(["account", "balance"], self.parser, self.conf)
68-
self.balance_2 = float(result.split("\n")[3].split()[1])
69-
assert self.balance_2 == self.balance_1 + self.amount
70-
71-
def test_withdraw(self):
72-
result = execute(["account", "balance"], self.parser, self.conf)
73-
self.balance_1 = float(result.split("\n")[3].split()[1])
74-
execute(["account", "withdraw", f"{self.amount}", "-y", "-q"], self.parser, self.conf)
75-
result = execute(["account", "balance"], self.parser, self.conf)
76-
self.balance_2 = float(result.split("\n")[3].split()[1])
77-
assert self.balance_2 == self.balance_1 - self.amount
78-
79-
80-
class TestGenerateLibrary(BaseTest):
81-
def setUp(self):
82-
super().setUp()
83-
self.path = './temp_files'
84-
self.org_id = '26072b8b6a0e448180f8c0e702ab6d2f'
85-
self.service_id = 'Exampleservice'
86-
87-
def test_generate(self):
88-
execute(["sdk", "generate-client-library", self.org_id, self.service_id, self.path], self.parser, self.conf)
89-
assert os.path.exists(f'{self.path}/{self.org_id}/{self.service_id}/python/')
90-
91-
def tearDown(self):
92-
shutil.rmtree(self.path)
93-
94-
95-
class TestEncryptionKey(BaseTest):
96-
def setUp(self):
97-
super().setUp()
98-
self.key = "1234567890123456789012345678901234567890123456789012345678901234"
99-
self.password = "some_pass"
100-
self.name = "some_name"
101-
self.default_name = "default_name"
102-
result = execute(["identity", "list"], self.parser, self.conf)
103-
if self.default_name not in result:
104-
execute(["identity", "create", self.default_name, "key", "--private-key", self.key, "-de"],
105-
self.parser,
106-
self.conf)
107-
108-
def test_1_create_identity_with_encryption_key(self):
109-
with mock.patch('getpass.getpass', return_value=self.password):
110-
execute(["identity", "create", self.name, "key", "--private-key", self.key],
111-
self.parser,
112-
self.conf)
113-
result = execute(["identity", "list"], self.parser, self.conf)
114-
assert self.name in result
115-
116-
def test_2_get_encryption_key(self):
117-
with mock.patch('getpass.getpass', return_value=self.password):
118-
execute(["identity", self.name], self.parser, self.conf)
119-
cmd = BlockchainCommand(self.conf, self.parser.parse_args(['session']))
120-
enc_key = cmd.config.get_session_field("private_key")
121-
res_key = cmd._get_decrypted_secret(enc_key)
122-
assert res_key == self.key
123-
124-
def test_3_delete_identity(self):
125-
with mock.patch('getpass.getpass', return_value=self.password):
126-
execute(["identity", self.default_name], self.parser, self.conf)
127-
execute(["identity", "delete", self.name], self.parser, self.conf)
128-
result = execute(["identity", "list"], self.parser, self.conf)
129-
assert self.name not in result
130-
131-
13250
if __name__ == "__main__":
13351
unittest.main()

snet/cli/test/functional_tests/mint/mint.py

Lines changed: 0 additions & 62 deletions
This file was deleted.

snet/cli/test/functional_tests/script10_claim_timeout_all.sh

Lines changed: 0 additions & 39 deletions
This file was deleted.

snet/cli/test/functional_tests/script11_update_metadata.sh

Lines changed: 0 additions & 69 deletions
This file was deleted.

0 commit comments

Comments
 (0)