]> nmode's Git Repositories - signal-cli/blob - run_tests.sh
Reformat code
[signal-cli] / run_tests.sh
1 #!/bin/sh
2 if [ $# -ne 2 ]; then
3 echo "Usage: $0 NUMBER_1 NUMBER_2"
4 exit 1
5 fi
6
7 set -e
8 # To update graalvm config, set GRAALVM_HOME, e.g:
9 # export GRAALVM_HOME=/usr/lib/jvm/java-11-graalvm
10 if [ ! -z "$GRAALVM_HOME" ]; then
11 export JAVA_HOME=$GRAALVM_HOME
12 export SIGNAL_CLI_OPTS='-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir/'
13 fi
14 export SIGNAL_CLI="$PWD/build/install/signal-cli/bin/signal-cli"
15
16 NUMBER_1="$1"
17 NUMBER_2="$2"
18 TEST_PIN_1=456test_pin_foo123
19
20 PATH_TEST_CONFIG="$PWD/build/test-config"
21 PATH_MAIN="$PATH_TEST_CONFIG/main"
22 PATH_LINK="$PATH_TEST_CONFIG/link"
23
24 ./gradlew installDist
25
26 function run() {
27 set -x
28 "$SIGNAL_CLI" --service-environment="sandbox" $@
29 set +x
30 }
31
32 function run_main() {
33 run --config="$PATH_MAIN" $@
34 }
35
36 function run_linked() {
37 run --config="$PATH_LINK" $@
38 }
39
40 function register() {
41 NUMBER=$1
42 PIN=$2
43 echo -n "Enter a captcha token (https://signalcaptchas.org/registration/generate.html): "
44 read CAPTCHA
45 run_main -u "$NUMBER" register --captcha "$CAPTCHA"
46 echo -n "Enter validation code for ${NUMBER}: "
47 read CODE
48 if [ -z "$PIN" ]; then
49 run_main -u "$NUMBER" verify "$CODE"
50 else
51 run_main -u "$NUMBER" verify "$CODE" --pin "$PIN"
52 fi
53 }
54
55 function link() {
56 NUMBER=$1
57 LINK_CODE_FILE="$PATH_TEST_CONFIG/link_code"
58 rm -f "$LINK_CODE_FILE"
59 mkfifo "$LINK_CODE_FILE"
60 run_linked link -n "test-device" >"$LINK_CODE_FILE" &
61 read LINK_CODE <"$LINK_CODE_FILE"
62 run_main -u "$NUMBER" addDevice --uri "$LINK_CODE"
63 wait
64 run_linked -u "$NUMBER" send --note-to-self -m hi
65 run_main -u "$NUMBER" receive
66 run_linked -u "$NUMBER" receive
67 run_main -u "$NUMBER" receive
68 }
69
70 run_main --version
71 run_main --help
72
73 ## Register
74 register "$NUMBER_1" "$TEST_PIN_1"
75 register "$NUMBER_2"
76
77 sleep 5
78
79 run_main -u "$NUMBER_1" setPin "$TEST_PIN_1"
80 run_main -u "$NUMBER_2" removePin
81
82 ## Contacts
83 run_main -u "$NUMBER_2" updateContact "$NUMBER_1" -n NUMBER_1 -e 10
84 run_main -u "$NUMBER_2" block "$NUMBER_1"
85 run_main -u "$NUMBER_2" unblock "$NUMBER_1"
86 run_main -u "$NUMBER_2" listContacts
87
88 run_main -u "$NUMBER_1" send "$NUMBER_2" -m hi
89 run_main -u "$NUMBER_2" receive
90 run_main -u "$NUMBER_2" send "$NUMBER_1" -m hi
91 run_main -u "$NUMBER_1" receive
92 run_main -u "$NUMBER_2" receive
93 ## Groups
94 GROUP_ID=$(run_main -u "$NUMBER_1" updateGroup -n GRUPPE -a LICENSE -m "$NUMBER_1" | grep -oP '(?<=").+(?=")')
95 run_main -u "$NUMBER_1" send "$NUMBER_2" -m first
96 run_main -u "$NUMBER_1" updateGroup -g "$GROUP_ID" -n GRUPPE_UMB -m "$NUMBER_2" --admin "$NUMBER_2" --remove-admin "$NUMBER_2" --description DESCRIPTION --link=enabled-with-approval --set-permission-add-member=only-admins --set-permission-edit-details=only-admins -e 42
97 run_main -u "$NUMBER_1" listGroups -d
98 run_main -u "$NUMBER_1" --output=json listGroups -d
99 run_main -u "$NUMBER_2" --verbose receive
100 run_main -u "$NUMBER_2" quitGroup -g "$GROUP_ID"
101 run_main -u "$NUMBER_2" listGroups -d
102 run_main -u "$NUMBER_2" --output=json listGroups -d
103 run_main -u "$NUMBER_1" receive
104 run_main -u "$NUMBER_1" updateGroup -g "$GROUP_ID" -m "$NUMBER_2"
105 run_main -u "$NUMBER_1" block "$GROUP_ID"
106 run_main -u "$NUMBER_1" unblock "$GROUP_ID"
107
108 ## Identities
109 run_main -u "$NUMBER_1" listIdentities
110 run_main -u "$NUMBER_2" listIdentities
111 run_main -u "$NUMBER_2" trust "$NUMBER_1" -a
112
113 ## Basic send/receive
114 for OUTPUT in "plain-text" "json"; do
115 run_main -u "$NUMBER_1" --output="$OUTPUT" getUserStatus "$NUMBER_1" "$NUMBER_2" "+111111111"
116 run_main -u "$NUMBER_1" send "$NUMBER_2" -m hi
117 run_main -u "$NUMBER_2" send "$NUMBER_1" -m hi
118 run_main -u "$NUMBER_1" send -g "$GROUP_ID" -m hi -a LICENSE
119 TIMESTAMP=$(uname -a | run_main -u "$NUMBER_1" send "$NUMBER_2")
120 run_main -u "$NUMBER_2" sendReaction "$NUMBER_1" -e 🍀 -a "$NUMBER_1" -t "$TIMESTAMP"
121 run_main -u "$NUMBER_1" remoteDelete "$NUMBER_2" -t "$TIMESTAMP"
122 run_main -u "$NUMBER_2" --output="$OUTPUT" receive
123 run_main -u "$NUMBER_1" --output="$OUTPUT" receive
124 run_main -u "$NUMBER_1" send -e "$NUMBER_2"
125 run_main -u "$NUMBER_2" --output="$OUTPUT" receive
126 done
127
128 ## Profile
129 run_main -u "$NUMBER_1" updateProfile --given-name=GIVEN --family-name=FAMILY --about=ABOUT --about-emoji=EMOJI --avatar=LICENSE
130
131 ## Provisioning
132 link "$NUMBER_1"
133 link "$NUMBER_2"
134 run_main -u "$NUMBER_1" listDevices
135 run_linked -u "$NUMBER_1" sendSyncRequest
136 run_main -u "$NUMBER_1" sendContacts
137
138 for OUTPUT in "plain-text" "json"; do
139 run_main -u "$NUMBER_1" send "$NUMBER_2" -m hi
140 run_main -u "$NUMBER_2" send "$NUMBER_1" -m hi
141 run_main -u "$NUMBER_2" --output="$OUTPUT" receive
142 run_main -u "$NUMBER_1" --output="$OUTPUT" receive
143 run_linked -u "$NUMBER_1" --output="$OUTPUT" receive
144 done
145
146 run_main -u "$NUMBER_1" removeDevice -d 2
147
148 ## DBus
149 #run_main -u "$NUMBER_1" --dbus send "$NUMBER_2" -m daemon_not_running
150 #run_main daemon &
151 #DAEMON_PID=$!
152 #sleep 5
153 #run_main -u "$NUMBER_1" --dbus send "$NUMBER_2" -m hii
154 #run_main -u "$NUMBER_2" --dbus receive
155 #kill "$DAEMON_PID"
156
157 ## Unregister
158 run_main -u "$NUMBER_1" unregister
159 run_main -u "$NUMBER_2" unregister --delete-account