setup.sh 6.99 KB
Newer Older
1
TEST_DIRECTORY="$(pwd)"
Lukas Fleischer's avatar
Lukas Fleischer committed
2
TOPLEVEL="$(cd .. && pwd)"
3
4
5

. ./sharness.sh

6
# Configure python search path.
7
PYTHONPATH="$TOPLEVEL"
8
9
export PYTHONPATH

10
# Configure paths to the Git interface scripts.
11
12
13
GIT_AUTH="$TOPLEVEL/aurweb/git/auth.py"
GIT_SERVE="$TOPLEVEL/aurweb/git/serve.py"
GIT_UPDATE="$TOPLEVEL/aurweb/git/update.py"
Lukas Fleischer's avatar
Lukas Fleischer committed
14
MKPKGLISTS="$TOPLEVEL/scripts/mkpkglists.py"
Lukas Fleischer's avatar
Lukas Fleischer committed
15
TUVOTEREMINDER="$TOPLEVEL/scripts/tuvotereminder.py"
Lukas Fleischer's avatar
Lukas Fleischer committed
16
PKGMAINT="$TOPLEVEL/scripts/pkgmaint.py"
Lukas Fleischer's avatar
Lukas Fleischer committed
17
AURBLUP="$TOPLEVEL/scripts/aurblup.py"
18
NOTIFY="$TOPLEVEL/scripts/notify.py"
19
20
21
22
23
24
25
26

# Create the configuration file and a dummy notification script.
cat >config <<-EOF
[database]
backend = sqlite
name = aur.db

[options]
27
28
aur_location = https://aur.archlinux.org
aur_request_ml = aur-requests@archlinux.org
29
30
31
32
enable-maintenance = 0
maintenance-exceptions = 127.0.0.1

[notifications]
33
34
35
36
notify-cmd = $NOTIFY
sendmail = ./sendmail.sh
sender = notify@aur.archlinux.org
reply-to = noreply@aur.archlinux.org
37
38
39
40

[auth]
valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
username-regex = [a-zA-Z0-9]+[.\-_]?[a-zA-Z0-9]+$
41
git-serve-cmd = $GIT_SERVE
42
43
44
45
46
ssh-options = restrict

[serve]
repo-path = ./aur.git/
repo-regex = [a-z0-9][a-z0-9.+_-]*$
47
48
git-shell-cmd = ./git-shell.sh
git-update-cmd = ./update.sh
49
50
51
52
ssh-cmdline = ssh aur@aur.archlinux.org

[update]
max-blob-size = 256000
Lukas Fleischer's avatar
Lukas Fleischer committed
53

Lukas Fleischer's avatar
Lukas Fleischer committed
54
55
56
57
58
[aurblup]
db-path = $(pwd)/sync/
sync-dbs = test
server = file://$(pwd)/remote/

Lukas Fleischer's avatar
Lukas Fleischer committed
59
60
61
[mkpkglists]
packagesfile = packages.gz
pkgbasefile = pkgbase.gz
62
63
EOF

64
cat >sendmail.sh <<-\EOF
65
#!/bin/sh
66
cat >>sendmail.out
67
EOF
68
chmod +x sendmail.sh
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
cat >git-shell.sh <<-\EOF
#!/bin/sh
echo $AUR_USER
echo $AUR_PKGBASE
echo $GIT_NAMESPACE
EOF
chmod +x git-shell.sh

cat >update.sh <<-\EOF
#!/bin/sh
echo $AUR_USER
echo $AUR_PKGBASE
EOF
chmod +x update.sh

85
86
87
88
89
90
91
92
93
94
95
96
AUR_CONFIG=config
export AUR_CONFIG

# Create SSH public keys which will be used by the test users later.
AUTH_KEYTYPE_USER=ssh-rsa
AUTH_KEYTEXT_USER=AAAAB3NzaC1yc2EAAAADAQABAAABAQCeUafDK4jqUiRHNQfwHcYjBKLZ4Rc1sNUofHApBP6j91nIvDHZe2VUqeBmFUhBz7kXK4VbXD9nlHMun2HeshL8hXnMzymZ8Wk7+IKefj61pajJkIdttw9Tnayfg7uhg5RbFy9zpEjmGjnIVjSzOXKCwppNT+CNujpKM5FD8gso/Z+l3fD+IwrPwS1SzF1Z99nqI9n2FM/JWZqluvTqnW9WdAvBDfutXxp0R5ZiLI5TAKL2Ssp5rpL70pkLXhv+9sK545zKKlXUFmw6Pi2iVBdqdRsk9ocl49dLiNIh8CYDCO3CRQn+8EnpBhTor2TKQxGJI3mzoBwWJJxoKhD/XlYJ
AUTH_FINGERPRINT_USER=SHA256:F/OFtYAy0JCytAGUi4RUZnOsThhQtFMK7fH1YvFBCpo

AUTH_KEYTYPE_TU=ssh-rsa
AUTH_KEYTEXT_TU=AAAAB3NzaC1yc2EAAAADAQABAAABAQC4Q2Beg6jf2r1LZ4vwT5y10dK8+/c5RaNyTwv77wF2OSLXh32xW0ovhE2lW2gqoakdGsxgM2fTtqMTl29WOsAxlGF7x9XbWhFXFUT88Daq1fAeuihkiRjfBbInSW/WcrFZ+biLBch67addtfkkd4PmAafDeeCtszAXqza+ltBG1oxAGiTXgI3LOhA1/GtLLxsi5sPUO3ZlhvwDn4Sy0aXYx8l9hop/PU4Cjn82hyRa9r+SRxQ3KtjKxcVMnZ8IyXOrBwXTukgSBR/6nSdEmO0JPkYUFuNwh3UGFKuNkrPguL5T+4YDym6czYmZJzQ7NNl2pLKYmYgBwBe5rORlWfN5
AUTH_FINGERPRINT_TU=SHA256:xQGC6j/U1Q3NDXLl04pm+Shr1mjYUXbGMUzlm9vby4k

97
98
99
100
AUTH_KEYTYPE_MISSING=sha-rsa
AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5
AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w

101
102
103
104
105
106
107
108
109
# Initialize the test database.
rm -f aur.db
sed \
	-e '/^DROP DATABASE /d' \
	-e '/^CREATE DATABASE /d' \
	-e '/^USE /d' \
	-e 's/ ENGINE = InnoDB//' \
	-e 's/ [A-Z]* UNSIGNED NOT NULL AUTO_INCREMENT/ INTEGER NOT NULL/' \
	-e 's/([0-9, ]*) UNSIGNED / UNSIGNED /' \
110
	"$TOPLEVEL/schema/aur-schema.sql" | sqlite3 aur.db
111
112
113

echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (1, 'user', '!', 'user@localhost', 1);" | sqlite3 aur.db
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (2, 'tu', '!', 'tu@localhost', 2);" | sqlite3 aur.db
114
115
116
117
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (3, 'dev', '!', 'dev@localhost', 3);" | sqlite3 aur.db
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (4, 'user2', '!', 'user2@localhost', 1);" | sqlite3 aur.db
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (5, 'user3', '!', 'user3@localhost', 1);" | sqlite3 aur.db
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (6, 'user4', '!', 'user4@localhost', 1);" | sqlite3 aur.db
118
119
120
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (7, 'tu2', '!', 'tu2@localhost', 2);" | sqlite3 aur.db
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (8, 'tu3', '!', 'tu3@localhost', 2);" | sqlite3 aur.db
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (9, 'tu4', '!', 'tu4@localhost', 2);" | sqlite3 aur.db
121
122
123
124

echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db
echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db

125
126
127
128
129
130
131
132
133
134
echo "INSERT INTO PackageBlacklist (Name) VALUES ('forbidden');" | sqlite3 aur.db
echo "INSERT INTO OfficialProviders (Name, Repo, Provides) VALUES ('official', 'core', 'official');" | sqlite3 aur.db

# Initialize a Git repository and test packages.
GIT_AUTHOR_EMAIL=author@example.com
GIT_AUTHOR_NAME='A U Thor'
GIT_COMMITTER_EMAIL=committer@example.com
GIT_COMMITTER_NAME='C O Mitter'
export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
135

136
(
137
138
139
	mkdir aur.git
	cd aur.git
	git init -q
140
141

	git checkout -q --orphan refs/namespaces/foobar/refs/heads/master
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173

	cat >PKGBUILD <<-EOF
	pkgname=foobar
	pkgver=1
	pkgrel=1
	pkgdesc='aurweb test package.'
	url='https://aur.archlinux.org/'
	license=('GPL')
	arch=('any')
	depends=('python-pygit2')
	source=()
	md5sums=()

	package() {
		echo 'Hello world!'
	}
	EOF

	cat >.SRCINFO <<-EOF
	pkgbase = foobar
		pkgdesc = aurweb test package.
		pkgver = 1
		pkgrel = 1
		url = https://aur.archlinux.org/
		arch = any
		license = GPL
		depends = python-pygit2

	pkgname = foobar
	EOF

	git add PKGBUILD .SRCINFO
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
	git commit -q -m 'Initial import'

	sed 's/\(pkgrel.*\)1/\12/' PKGBUILD >PKGBUILD.new
	sed 's/\(pkgrel.*\)1/\12/' .SRCINFO >.SRCINFO.new
	mv PKGBUILD.new PKGBUILD
	mv .SRCINFO.new .SRCINFO
	git commit -q -am 'Bump pkgrel'

	git checkout -q --orphan refs/namespaces/foobar2/refs/heads/master

	cat >PKGBUILD <<-EOF
	pkgname=foobar2
	pkgver=1
	pkgrel=1
	pkgdesc='aurweb test package.'
	url='https://aur.archlinux.org/'
	license=('MIT')
	arch=('any')
	depends=('python-pygit2')
	source=()
	md5sums=()

	package() {
		echo 'Hello world!'
	}
	EOF

	cat >.SRCINFO <<-EOF
	pkgbase = foobar2
		pkgdesc = aurweb test package.
		pkgver = 1
		pkgrel = 1
		url = https://aur.archlinux.org/
		arch = any
		license = MIT
		depends = python-pygit2

	pkgname = foobar2
	EOF

	git add PKGBUILD .SRCINFO
	git commit -q -m 'Initial import'

	git checkout -q refs/namespaces/foobar/refs/heads/master
218
)