1# vi: set ft=conf
2
3# convert crlf to lf on windows
4[windows] dos2unix info.txt admin_key_list1.txt admin_key_list2.txt list1.txt list2.txt foo_info1.txt foo_info2.txt foo_info3.txt foo_info4.txt foo_info5.txt bar_info.txt
5
6# start soft serve
7exec soft serve &
8# wait for server to start
9waitforserver
10
11# add key to admin
12soft user add-pubkey admin "$ADMIN2_AUTHORIZED_KEY"
13soft user info admin
14soft info
15cmpenv stdout info.txt
16
17
18# list admin pubkeys
19soft pubkey list
20cmpenv stdout admin_key_list1.txt
21
22# remove key
23soft pubkey remove $ADMIN2_AUTHORIZED_KEY
24soft pubkey list
25cmpenv stdout admin_key_list2.txt
26
27# add key back key
28soft pubkey add $ADMIN2_AUTHORIZED_KEY
29soft pubkey list
30cmpenv stdout admin_key_list1.txt
31
32# list users
33soft user list
34cmpenv stdout list1.txt
35
36# create a new user
37soft user create foo --key "$USER1_AUTHORIZED_KEY"
38soft user list
39cmpenv stdout list2.txt
40
41# get new user info
42soft user info foo
43cmpenv stdout foo_info1.txt
44
45# make user admin
46soft user set-admin foo true
47soft user info foo
48cmpenv stdout foo_info2.txt
49
50# remove admin
51soft user set-admin foo false
52soft user info foo
53cmpenv stdout foo_info3.txt
54
55# remove key from user
56soft user remove-pubkey foo "$USER1_AUTHORIZED_KEY"
57soft user info foo
58cmpenv stdout foo_info4.txt
59
60# rename user
61soft user set-username foo foo2
62soft user info foo2
63cmpenv stdout foo_info5.txt
64
65# remove user
66soft user delete foo2
67! stdout .
68soft user list
69cmpenv stdout list1.txt
70
71# create a new user with an invalid email
72! soft user create bar --key "$USER2_AUTHORIZED_KEY" "foobar"
73stderr 'invalid email address.*'
74
75# create a new user with a valid email
76soft user create bar --key "$USER2_AUTHORIZED_KEY" "foo@bar.baz"
77! stdout .
78# add email to existing user
79soft user add-email bar "foobar@fubar.baz"
80! stdout .
81# add existing email
82! soft user add-email bar "foobar@fubar.baz"
83stderr 'duplicate key.*'
84
85# get new user info
86soft user info bar
87cmpenv stdout bar_info.txt
88
89# remove primary email from user
90! soft user remove-email bar "foo@bar.baz"
91stderr 'cannot remove primary email.*'
92
93# set primary email that doesn't exist
94! soft user set-primary-email bar "foobar@foofoo.foo"
95stderr 'no rows in result set.*'
96# set primary email
97soft user set-primary-email bar "foobar@fubar.baz"
98! stdout .
99# remove other email
100soft user remove-email bar "foo@bar.baz"
101! stdout .
102
103# stop the server
104[windows] stopserver
105[windows] ! stderr .
106
107
108-- info.txt --
109Username: admin
110Admin: true
111Public keys:
112 $ADMIN1_AUTHORIZED_KEY
113 $ADMIN2_AUTHORIZED_KEY
114-- list1.txt --
115admin
116-- list2.txt --
117admin
118foo
119-- foo_info1.txt --
120Username: foo
121Admin: false
122Public keys:
123 $USER1_AUTHORIZED_KEY
124-- foo_info2.txt --
125Username: foo
126Admin: true
127Public keys:
128 $USER1_AUTHORIZED_KEY
129-- foo_info3.txt --
130Username: foo
131Admin: false
132Public keys:
133 $USER1_AUTHORIZED_KEY
134-- foo_info4.txt --
135Username: foo
136Admin: false
137Public keys:
138-- foo_info5.txt --
139Username: foo2
140Admin: false
141Public keys:
142-- admin_key_list1.txt --
143$ADMIN1_AUTHORIZED_KEY
144$ADMIN2_AUTHORIZED_KEY
145-- admin_key_list2.txt --
146$ADMIN1_AUTHORIZED_KEY
147-- bar_info.txt --
148Username: bar
149Admin: false
150Public keys:
151 $USER2_AUTHORIZED_KEY
152Emails:
153 foo@bar.baz (primary: true)
154 foobar@fubar.baz (primary: false)