Skip to content

Commit c39f92c

Browse files
committed
feat(integration): INT-13 SuiteCRM->Nextcloud CalDAV Phase 3f + CI
1 parent 9dfe75f commit c39f92c

2 files changed

Lines changed: 48 additions & 2 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ jobs:
188188
run: docker compose -f docker/docker-compose.sso.yml down -v
189189

190190
lab-05-smoke:
191-
name: Lab 05 — INT-04 SuiteCRM↔Keycloak SAML + INT-09 SuiteCRM↔FreePBX CTI + INT-12 SuiteCRM↔Odoo customer sync
191+
name: Lab 05 — INT-04 SuiteCRM↔Keycloak SAML + INT-09 SuiteCRM↔FreePBX CTI + INT-12 SuiteCRM↔Odoo customer sync + INT-13 SuiteCRM↔Nextcloud CalDAV
192192
runs-on: ubuntu-latest
193193
needs: validate
194194
continue-on-error: true

tests/labs/test-lab-12-05.sh

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,13 +480,59 @@ else
480480
fail "INT-12: SuiteCRM container cannot reach Odoo partner sync endpoint"
481481
fi
482482

483+
# ── Phase 3f: INT-13 Nextcloud CalDAV CalDAV ↔ SuiteCRM Calendar Sync ────────
484+
section "Phase 3f: Nextcloud CalDAV Env Vars + CalDAV stub (INT-13)"
485+
486+
# Env var checks for INT-13
487+
for envpair in "NEXTCLOUD_USER=admin" "NEXTCLOUD_CALDAV_PATH=/remote.php/dav/calendars/admin"; do
488+
KEY="${envpair%%=*}"
489+
VAL="${envpair#*=}"
490+
if docker exec suitecrm-i05-app env | grep -q "${KEY}=${VAL}"; then
491+
pass "INT-13: Env ${KEY} set correctly"
492+
else
493+
fail "INT-13: Env ${KEY} not set or wrong in SuiteCRM container"
494+
fi
495+
done
496+
497+
# Register CalDAV PROPFIND stub (Nextcloud calendars endpoint)
498+
HTTP_STATUS=$(curl -sf -o /dev/null -w "%{http_code}" \
499+
-X POST "${MOCK_URL}/__admin/mappings" \
500+
-H "Content-Type: application/json" \
501+
-d '{
502+
"request": {"method": "PROPFIND", "url": "/remote.php/dav/calendars/admin/"},
503+
"response": {"status": 207,
504+
"headers": {"Content-Type": "application/xml; charset=utf-8"},
505+
"body": "<?xml version=\\"1.0\\"?><d:multistatus xmlns:d=\\"DAV:\\"><d:response><d:href>/remote.php/dav/calendars/admin/</d:href><d:propstat><d:prop><d:displayname>admin</d:displayname></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response></d:multistatus>"}
506+
}' || echo "000")
507+
[ "${HTTP_STATUS}" = "201" ] \
508+
&& pass "INT-13: WireMock stub CalDAV PROPFIND registered" \
509+
|| fail "INT-13: WireMock stub CalDAV PROPFIND failed (HTTP ${HTTP_STATUS})"
510+
511+
# Verify CalDAV PROPFIND stub responds with 207
512+
CALDAV_HTTP=$(curl -s -o /dev/null -w "%{http_code}" \
513+
-X PROPFIND "${MOCK_URL}/remote.php/dav/calendars/admin/" \
514+
-H "Depth: 1")
515+
[ "${CALDAV_HTTP}" = "207" ] \
516+
&& pass "INT-13: WireMock CalDAV PROPFIND stub responds 207" \
517+
|| fail "INT-13: WireMock CalDAV PROPFIND stub returned ${CALDAV_HTTP}"
518+
519+
# SuiteCRM container → WireMock CalDAV endpoint reachable
520+
if docker exec suitecrm-i05-app curl -sf \
521+
-X PROPFIND "http://suitecrm-i05-mock:8080/remote.php/dav/calendars/admin/" \
522+
-H "Depth: 1" > /dev/null 2>&1; then
523+
pass "INT-13: SuiteCRM container can reach Nextcloud CalDAV endpoint (WireMock)"
524+
else
525+
fail "INT-13: SuiteCRM container cannot reach Nextcloud CalDAV endpoint (WireMock)"
526+
fi
527+
483528
# ── Results ───────────────────────────────────────────────────────────────────
484529
echo ""
485530
echo -e "${CYAN}============================================================${NC}"
486-
echo -e " Lab ${LAB_ID}: INT-04 + INT-09 + INT-12 Complete"
531+
echo -e " Lab ${LAB_ID}: INT-04 + INT-09 + INT-12 + INT-13 Complete"
487532
echo -e " INT-04: SuiteCRM ↔ Keycloak SAML"
488533
echo -e " INT-09: SuiteCRM ↔ FreePBX CTI"
489534
echo -e " INT-12: SuiteCRM ↔ Odoo customer sync"
535+
echo -e " INT-13: SuiteCRM ↔ Nextcloud CalDAV calendar sync"
490536
echo -e " ${GREEN}PASS: ${PASS}${NC} | ${RED}FAIL: ${FAIL}${NC}"
491537
echo -e "${CYAN}============================================================${NC}"
492538

0 commit comments

Comments
 (0)