Skip to content

Commit 7939978

Browse files
committed
HTTP tests for application settings
1 parent cdd6718 commit 7939978

File tree

5 files changed

+170
-0
lines changed

5 files changed

+170
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
5+
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
6+
purge_cache "$END_USER_VARNISH_SERVICE"
7+
purge_cache "$ADMIN_VARNISH_SERVICE"
8+
purge_cache "$FRONTEND_VARNISH_SERVICE"
9+
10+
# Test: GET /settings with If-None-Match - Conditional GET with matching ETag
11+
12+
# First GET to obtain ETag
13+
response=$(curl -i -k -s \
14+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
15+
-H "Accept: application/n-triples" \
16+
"${END_USER_BASE_URL}settings")
17+
18+
# Extract ETag
19+
etag=$(echo "$response" | grep -i "ETag:" | sed 's/ETag: //i' | tr -d '\r\n')
20+
21+
# Second GET with If-None-Match
22+
curl -k -w "%{http_code}\n" -o /dev/null -s \
23+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
24+
-H "Accept: application/n-triples" \
25+
-H "If-None-Match: $etag" \
26+
"${END_USER_BASE_URL}settings" \
27+
| grep -q "$STATUS_NOT_MODIFIED"

http-tests/misc/GET-settings.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
5+
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
6+
purge_cache "$END_USER_VARNISH_SERVICE"
7+
purge_cache "$ADMIN_VARNISH_SERVICE"
8+
purge_cache "$FRONTEND_VARNISH_SERVICE"
9+
10+
# Test: GET /settings - Retrieve current application settings
11+
12+
response=$(curl -k -w "%{http_code}\n" -s \
13+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
14+
-H "Accept: application/n-triples" \
15+
"${END_USER_BASE_URL}settings")
16+
17+
# Extract status code (last line) and body (everything else)
18+
status=$(echo "$response" | tail -n 1)
19+
body=$(echo "$response" | sed '$d')
20+
21+
# Verify 200 OK response
22+
if [ "$status" != "$STATUS_OK" ]; then
23+
exit 1
24+
fi
25+
26+
# Verify response contains expected application data
27+
if ! echo "$body" | grep -q '<urn:linkeddatahub:apps/end-user>'; then
28+
exit 1
29+
fi
30+
31+
if ! echo "$body" | grep -q '<https://w3id.org/atomgraph/linkeddatahub/apps#EndUserApplication>'; then
32+
exit 1
33+
fi
34+
35+
if ! echo "$body" | grep -q '"LinkedDataHub"'; then
36+
exit 1
37+
fi
38+
39+
if ! echo "$body" | grep -q '<https://localhost:4443>'; then
40+
exit 1
41+
fi
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
5+
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
6+
purge_cache "$END_USER_VARNISH_SERVICE"
7+
purge_cache "$ADMIN_VARNISH_SERVICE"
8+
purge_cache "$FRONTEND_VARNISH_SERVICE"
9+
10+
# Test: PATCH /settings - Empty result (should fail with 400)
11+
12+
curl -k -w "%{http_code}\n" -o /dev/null -s \
13+
-X PATCH \
14+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
15+
-H "Content-Type: application/sparql-update" \
16+
-d "DELETE WHERE { ?s ?p ?o }" \
17+
"${END_USER_BASE_URL}settings" \
18+
| grep -q "$STATUS_BAD_REQUEST"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
5+
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
6+
purge_cache "$END_USER_VARNISH_SERVICE"
7+
purge_cache "$ADMIN_VARNISH_SERVICE"
8+
purge_cache "$FRONTEND_VARNISH_SERVICE"
9+
10+
# Test: PATCH /settings - Remove mandatory property (should fail validation)
11+
12+
curl -k -w "%{http_code}\n" -o /dev/null -s \
13+
-X PATCH \
14+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
15+
-H "Content-Type: application/sparql-update" \
16+
-d "PREFIX lapp: <https://w3id.org/atomgraph/linkeddatahub/apps#>
17+
DELETE { ?app lapp:origin ?origin }
18+
WHERE { ?app lapp:origin ?origin }" \
19+
"${END_USER_BASE_URL}settings" \
20+
| grep -q "$STATUS_UNPROCESSABLE_ENTITY"

http-tests/misc/PATCH-settings.sh

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
5+
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
6+
purge_cache "$END_USER_VARNISH_SERVICE"
7+
purge_cache "$ADMIN_VARNISH_SERVICE"
8+
purge_cache "$FRONTEND_VARNISH_SERVICE"
9+
10+
# Test: PATCH /settings - Valid update (change title)
11+
12+
# Get initial ETag
13+
initial_response=$(curl -i -k -s \
14+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
15+
-H "Accept: application/n-triples" \
16+
"${END_USER_BASE_URL}settings")
17+
18+
etag=$(echo "$initial_response" | grep -i "ETag:" | sed 's/ETag: //i' | tr -d '\r\n')
19+
20+
# PATCH to update title
21+
(
22+
curl -k -w "%{http_code}\n" -o /dev/null -s \
23+
-X PATCH \
24+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
25+
-H "Content-Type: application/sparql-update" \
26+
-d "PREFIX dct: <http://purl.org/dc/terms/>
27+
DELETE { ?app dct:title ?title }
28+
INSERT { ?app dct:title \"Updated Title\" }
29+
WHERE { ?app dct:title ?title }" \
30+
"${END_USER_BASE_URL}settings"
31+
) \
32+
| grep -q "$STATUS_NO_CONTENT"
33+
34+
# Verify changes were persisted by GET
35+
verify_response=$(curl -k -s \
36+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
37+
-H "Accept: application/n-triples" \
38+
"${END_USER_BASE_URL}settings")
39+
40+
if ! echo "$verify_response" | grep -q "Updated Title"; then
41+
exit 1
42+
fi
43+
44+
# Verify ETag changed after update
45+
verify_etag_response=$(curl -i -k -s \
46+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
47+
-H "Accept: application/n-triples" \
48+
"${END_USER_BASE_URL}settings")
49+
50+
new_etag=$(echo "$verify_etag_response" | grep -i "ETag:" | sed 's/ETag: //i' | tr -d '\r\n')
51+
52+
if [ "$etag" = "$new_etag" ]; then
53+
exit 1
54+
fi
55+
56+
# Restore original title for subsequent tests
57+
curl -k -w "%{http_code}\n" -o /dev/null -s -X PATCH \
58+
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
59+
-H "Content-Type: application/sparql-update" \
60+
-d "PREFIX dct: <http://purl.org/dc/terms/>
61+
DELETE { ?app dct:title ?title }
62+
INSERT { ?app dct:title \"LinkedDataHub\" }
63+
WHERE { ?app dct:title ?title }" \
64+
"${END_USER_BASE_URL}settings" > /dev/null

0 commit comments

Comments
 (0)