Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 53 additions & 35 deletions config/system.trig
Original file line number Diff line number Diff line change
Expand Up @@ -15,41 +15,59 @@

# root admin

<urn:linkeddatahub:apps/admin> a lapp:Application, lapp:AdminApplication ;
dct:title "LinkedDataHub admin" ;
# ldt:base <https://admin.localhost:4443/> ;
lapp:origin <https://admin.localhost:4443> ;
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
ldt:service <urn:linkeddatahub:services/admin> ;
ac:stylesheet <static/xsl/admin/layout.xsl> ;
lapp:endUserApplication <urn:linkeddatahub:apps/end-user> ;
lapp:frontendProxy <http://varnish-frontend:6060/> .

<urn:linkeddatahub:services/admin> a sd:Service ;
dct:title "LinkedDataHub admin service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-admin:3030/ds/> ;
a:graphStore <http://fuseki-admin:3030/ds/> ;
a:quadStore <http://fuseki-admin:3030/ds/> ;
lapp:backendProxy <http://varnish-admin/> .
<urn:linkeddatahub:apps/admin>
{
<urn:linkeddatahub:apps/admin> a lapp:Application, lapp:AdminApplication ;
dct:title "LinkedDataHub admin" ;
# ldt:base <https://admin.localhost:4443/> ;
lapp:origin <https://admin.localhost:4443> ;
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
ldt:service <urn:linkeddatahub:services/admin> ;
ac:stylesheet <static/xsl/admin/layout.xsl> ;
lapp:endUserApplication <urn:linkeddatahub:apps/end-user> ;
lapp:frontendProxy <http://varnish-frontend:6060/> .

}

<urn:linkeddatahub:services/admin>
{

<urn:linkeddatahub:services/admin> a sd:Service ;
dct:title "LinkedDataHub admin service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-admin:3030/ds/> ;
a:graphStore <http://fuseki-admin:3030/ds/> ;
a:quadStore <http://fuseki-admin:3030/ds/> ;
lapp:backendProxy <http://varnish-admin/> .

}

# root end-user

<urn:linkeddatahub:apps/end-user> a lapp:Application, lapp:EndUserApplication ;
dct:title "LinkedDataHub" ;
# ldt:base <https://localhost:4443/> ;
lapp:origin <https://localhost:4443> ;
ldt:ontology <https://localhost:4443/ns#> ;
ldt:service <urn:linkeddatahub:services/end-user> ;
ac:stylesheet <static/xsl/layout.xsl> ;
lapp:adminApplication <urn:linkeddatahub:apps/admin> ;
lapp:frontendProxy <http://varnish-frontend:6060/> ;
lapp:public true .

<urn:linkeddatahub:services/end-user> a sd:Service ;
dct:title "LinkedDataHub service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-end-user:3030/ds/> ;
a:graphStore <http://fuseki-end-user:3030/ds/> ;
a:quadStore <http://fuseki-end-user:3030/ds/> ;
lapp:backendProxy <http://varnish-end-user/> .
<urn:linkeddatahub:apps/end-user>
{
<urn:linkeddatahub:apps/end-user> a lapp:Application, lapp:EndUserApplication ;
dct:title "LinkedDataHub" ;
# ldt:base <https://localhost:4443/> ;
lapp:origin <https://localhost:4443> ;
ldt:ontology <https://localhost:4443/ns#> ;
ldt:service <urn:linkeddatahub:services/end-user> ;
ac:stylesheet <static/xsl/layout.xsl> ;
lapp:adminApplication <urn:linkeddatahub:apps/admin> ;
lapp:frontendProxy <http://varnish-frontend:6060/> ;
lapp:public true .

}

<urn:linkeddatahub:services/end-user>
{

<urn:linkeddatahub:services/end-user> a sd:Service ;
dct:title "LinkedDataHub service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-end-user:3030/ds/> ;
a:graphStore <http://fuseki-end-user:3030/ds/> ;
a:quadStore <http://fuseki-end-user:3030/ds/> ;
lapp:backendProxy <http://varnish-end-user/> .

}
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ services:
- ./datasets/secretary:/var/linkeddatahub/datasets/secretary
- ./uploads:/var/www/linkeddatahub/uploads
- ./config/dev.log4j.properties:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties:ro
- ./config/system.trig:/var/linkeddatahub/datasets/system.trig:ro
- ./config/system.trig:/var/linkeddatahub/datasets/system.trig
fuseki-admin:
image: atomgraph/fuseki:4.7.0
user: root # otherwise fuseki user does not have permissions to the mounted folder which is owner by root
Expand Down
148 changes: 88 additions & 60 deletions http-tests/config/system.trig
Original file line number Diff line number Diff line change
Expand Up @@ -15,76 +15,104 @@

# root admin

<urn:linkeddatahub:apps/admin> a lapp:Application, lapp:AdminApplication ;
dct:title "LinkedDataHub admin" ;
# ldt:base <https://admin.localhost:4443/> ;
lapp:origin <https://admin.localhost:4443> ;
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
ldt:service <urn:linkeddatahub:services/admin> ;
lapp:endUserApplication <urn:linkeddatahub:apps/end-user> ;
lapp:frontendProxy <http://varnish-frontend:6060/> .
<urn:linkeddatahub:apps/admin>
{
<urn:linkeddatahub:apps/admin> a lapp:Application, lapp:AdminApplication ;
dct:title "LinkedDataHub admin" ;
# ldt:base <https://admin.localhost:4443/> ;
lapp:origin <https://admin.localhost:4443> ;
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
ldt:service <urn:linkeddatahub:services/admin> ;
ac:stylesheet <static/xsl/admin/layout.xsl> ;
lapp:endUserApplication <urn:linkeddatahub:apps/end-user> ;
lapp:frontendProxy <http://varnish-frontend:6060/> .
}

<urn:linkeddatahub:services/admin> a sd:Service ;
dct:title "LinkedDataHub admin service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-admin:3030/ds/> ;
a:graphStore <http://fuseki-admin:3030/ds/> ;
a:quadStore <http://fuseki-admin:3030/ds/> ;
lapp:backendProxy <http://varnish-admin/> .
<urn:linkeddatahub:services/admin>
{
<urn:linkeddatahub:services/admin> a sd:Service ;
dct:title "LinkedDataHub admin service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-admin:3030/ds/> ;
a:graphStore <http://fuseki-admin:3030/ds/> ;
a:quadStore <http://fuseki-admin:3030/ds/> ;
lapp:backendProxy <http://varnish-admin/> .
}

# root end-user

<urn:linkeddatahub:apps/end-user> a lapp:Application, lapp:EndUserApplication ;
dct:title "LinkedDataHub" ;
# ldt:base <https://localhost:4443/> ;
lapp:origin <https://localhost:4443> ;
ldt:ontology <https://localhost:4443/ns#> ;
ldt:service <urn:linkeddatahub:services/end-user> ;
lapp:adminApplication <urn:linkeddatahub:apps/admin> ;
lapp:frontendProxy <http://varnish-frontend:6060/> ;
lapp:public true .
<urn:linkeddatahub:apps/end-user>
{
<urn:linkeddatahub:apps/end-user> a lapp:Application, lapp:EndUserApplication ;
dct:title "LinkedDataHub" ;
# ldt:base <https://localhost:4443/> ;
lapp:origin <https://localhost:4443> ;
ldt:ontology <https://localhost:4443/ns#> ;
ldt:service <urn:linkeddatahub:services/end-user> ;
ac:stylesheet <static/xsl/layout.xsl> ;
lapp:adminApplication <urn:linkeddatahub:apps/admin> ;
lapp:frontendProxy <http://varnish-frontend:6060/> ;
lapp:public true .
}

<urn:linkeddatahub:services/end-user> a sd:Service ;
dct:title "LinkedDataHub service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-end-user:3030/ds/> ;
a:graphStore <http://fuseki-end-user:3030/ds/> ;
a:quadStore <http://fuseki-end-user:3030/ds/> ;
lapp:backendProxy <http://varnish-end-user/> .
<urn:linkeddatahub:services/end-user>
{
<urn:linkeddatahub:services/end-user> a sd:Service ;
dct:title "LinkedDataHub service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-end-user:3030/ds/> ;
a:graphStore <http://fuseki-end-user:3030/ds/> ;
a:quadStore <http://fuseki-end-user:3030/ds/> ;
lapp:backendProxy <http://varnish-end-user/> .
}

# test admin

<urn:linkeddatahub:apps/test/admin> a lapp:Application, lapp:AdminApplication ;
dct:title "Test admin" ;
lapp:origin <https://admin.test.localhost:4443> ;
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
ldt:service <urn:linkeddatahub:services/test/admin> ;
lapp:endUserApplication <urn:linkeddatahub:apps/test/end-user> ;
lapp:frontendProxy <http://varnish-frontend:6060/> .
<urn:linkeddatahub:apps/test/admin>
{
<urn:linkeddatahub:apps/test/admin> a lapp:Application, lapp:AdminApplication ;
dct:title "Test admin" ;
lapp:origin <https://admin.test.localhost:4443> ;
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
ldt:service <urn:linkeddatahub:services/test/admin> ;
ac:stylesheet <static/xsl/admin/layout.xsl> ;
lapp:endUserApplication <urn:linkeddatahub:apps/test/end-user> ;
lapp:frontendProxy <http://varnish-frontend:6060/> .
}

<urn:linkeddatahub:services/test/admin> a sd:Service ;
dct:title "Test admin service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-admin:3030/ds/> ;
a:graphStore <http://fuseki-admin:3030/ds/> ;
a:quadStore <http://fuseki-admin:3030/ds/> ;
lapp:backendProxy <http://varnish-admin/> .
<urn:linkeddatahub:services/test/admin>
{
<urn:linkeddatahub:services/test/admin> a sd:Service ;
dct:title "Test admin service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-admin:3030/ds/> ;
a:graphStore <http://fuseki-admin:3030/ds/> ;
a:quadStore <http://fuseki-admin:3030/ds/> ;
lapp:backendProxy <http://varnish-admin/> .
}

# test end-user

<urn:linkeddatahub:apps/test/end-user> a lapp:Application, lapp:EndUserApplication ;
dct:title "Test" ;
lapp:origin <https://test.localhost:4443> ;
ldt:ontology <https://test.localhost:4443/ns#> ;
ldt:service <urn:linkeddatahub:services/test/end-user> ;
lapp:adminApplication <urn:linkeddatahub:apps/test/admin> ;
lapp:frontendProxy <http://varnish-frontend:6060/> ;
lapp:public true .
<urn:linkeddatahub:apps/test/end-user>
{
<urn:linkeddatahub:apps/test/end-user> a lapp:Application, lapp:EndUserApplication ;
dct:title "Test" ;
lapp:origin <https://test.localhost:4443> ;
ldt:ontology <https://test.localhost:4443/ns#> ;
ldt:service <urn:linkeddatahub:services/test/end-user> ;
ac:stylesheet <static/xsl/layout.xsl> ;
lapp:adminApplication <urn:linkeddatahub:apps/test/admin> ;
lapp:frontendProxy <http://varnish-frontend:6060/> ;
lapp:public true .
}

<urn:linkeddatahub:services/test/end-user> a sd:Service ;
dct:title "Test service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-end-user:3030/ds/> ;
a:graphStore <http://fuseki-end-user:3030/ds/> ;
a:quadStore <http://fuseki-end-user:3030/ds/> ;
lapp:backendProxy <http://varnish-end-user/> .
<urn:linkeddatahub:services/test/end-user>
{
<urn:linkeddatahub:services/test/end-user> a sd:Service ;
dct:title "Test service" ;
sd:supportedLanguage sd:SPARQL11Query, sd:SPARQL11Update ;
sd:endpoint <http://fuseki-end-user:3030/ds/> ;
a:graphStore <http://fuseki-end-user:3030/ds/> ;
a:quadStore <http://fuseki-end-user:3030/ds/> ;
lapp:backendProxy <http://varnish-end-user/> .
}
27 changes: 27 additions & 0 deletions http-tests/misc/GET-settings-etag.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail

initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
purge_cache "$END_USER_VARNISH_SERVICE"
purge_cache "$ADMIN_VARNISH_SERVICE"
purge_cache "$FRONTEND_VARNISH_SERVICE"

# Test: GET /settings with If-None-Match - Conditional GET with matching ETag

# First GET to obtain ETag
response=$(curl -i -k -s \
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
-H "Accept: application/n-triples" \
"${END_USER_BASE_URL}settings")

# Extract ETag
etag=$(echo "$response" | grep -i "ETag:" | sed 's/ETag: //i' | tr -d '\r\n')

# Second GET with If-None-Match
curl -k -w "%{http_code}\n" -o /dev/null -s \
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
-H "Accept: application/n-triples" \
-H "If-None-Match: $etag" \
"${END_USER_BASE_URL}settings" \
| grep -q "$STATUS_NOT_MODIFIED"
41 changes: 41 additions & 0 deletions http-tests/misc/GET-settings.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
set -euo pipefail

initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
purge_cache "$END_USER_VARNISH_SERVICE"
purge_cache "$ADMIN_VARNISH_SERVICE"
purge_cache "$FRONTEND_VARNISH_SERVICE"

# Test: GET /settings - Retrieve current application settings

response=$(curl -k -w "%{http_code}\n" -s \
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
-H "Accept: application/n-triples" \
"${END_USER_BASE_URL}settings")

# Extract status code (last line) and body (everything else)
status=$(echo "$response" | tail -n 1)
body=$(echo "$response" | sed '$d')

# Verify 200 OK response
if [ "$status" != "$STATUS_OK" ]; then
exit 1
fi

# Verify response contains expected application data
if ! echo "$body" | grep -q '<urn:linkeddatahub:apps/end-user>'; then
exit 1
fi

if ! echo "$body" | grep -q '<https://w3id.org/atomgraph/linkeddatahub/apps#EndUserApplication>'; then
exit 1
fi

if ! echo "$body" | grep -q '"LinkedDataHub"'; then
exit 1
fi

if ! echo "$body" | grep -q '<https://localhost:4443>'; then
exit 1
fi
20 changes: 20 additions & 0 deletions http-tests/misc/PATCH-settings-422.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -euo pipefail

initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
purge_cache "$END_USER_VARNISH_SERVICE"
purge_cache "$ADMIN_VARNISH_SERVICE"
purge_cache "$FRONTEND_VARNISH_SERVICE"

# Test: PATCH /settings - Remove mandatory property (should fail validation)

curl -k -w "%{http_code}\n" -o /dev/null -s \
-X PATCH \
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
-H "Content-Type: application/sparql-update" \
-d "PREFIX lapp: <https://w3id.org/atomgraph/linkeddatahub/apps#>
DELETE { ?app lapp:origin ?origin }
WHERE { ?app lapp:origin ?origin }" \
"${END_USER_BASE_URL}settings" \
| grep -q "$STATUS_UNPROCESSABLE_ENTITY"
18 changes: 18 additions & 0 deletions http-tests/misc/PATCH-settings-empty-422.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail

initialize_dataset "$END_USER_BASE_URL" "$TMP_END_USER_DATASET" "$END_USER_ENDPOINT_URL"
initialize_dataset "$ADMIN_BASE_URL" "$TMP_ADMIN_DATASET" "$ADMIN_ENDPOINT_URL"
purge_cache "$END_USER_VARNISH_SERVICE"
purge_cache "$ADMIN_VARNISH_SERVICE"
purge_cache "$FRONTEND_VARNISH_SERVICE"

# Test: PATCH /settings - Empty result (should fail with 422)

curl -k -w "%{http_code}\n" -o /dev/null -s \
-X PATCH \
-E "$OWNER_CERT_FILE":"$OWNER_CERT_PWD" \
-H "Content-Type: application/sparql-update" \
-d "DELETE WHERE { ?s ?p ?o }" \
"${END_USER_BASE_URL}settings" \
| grep -q "$STATUS_UNPROCESSABLE_ENTITY"
Loading