https://github.com/iptoux/sap_sf-lms-mockserver
SAP SuccessFactor LMS - MockServer for development
https://github.com/iptoux/sap_sf-lms-mockserver
sap sap-sf successfactor successfactors successfactors-lms
Last synced: 9 months ago
JSON representation
SAP SuccessFactor LMS - MockServer for development
- Host: GitHub
- URL: https://github.com/iptoux/sap_sf-lms-mockserver
- Owner: iptoux
- License: mit
- Created: 2025-07-17T20:25:06.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-17T23:24:08.000Z (12 months ago)
- Last Synced: 2025-09-08T05:44:08.171Z (10 months ago)
- Topics: sap, sap-sf, successfactor, successfactors, successfactors-lms
- Language: Python
- Homepage: https://www.sap.com/germany/products/hcm/corporate-lms.html
- Size: 2.12 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
SAP SuccessFactors LMS MockServer
**đ
Letzte Aktualisierung:** Juli 2025 | **đ·ïž Version:** 1.0.0
[](https://python.org)
[](https://flask.palletsprojects.com)
[](LICENSE)
[](Dockerfile)
Ein vollstĂ€ndiger Mock-Server fĂŒr die SAP SuccessFactors Learning Management System (LMS) API mit realistischen Mock-Daten und OData v4 UnterstĂŒtzung.
## Inhaltsverzeichnis
- [Ăbersicht](#ĂŒbersicht)
- [Features](#features)
- [Architektur](#architektur)
- [Installation](#installation)
- [Konfiguration](#konfiguration)
- [API-Dokumentation](#api-dokumentation)
- [Testing](#testing)
- [Deployment](#deployment)
- [Docker](#docker)
- [Anpassung](#anpassung)
- [Troubleshooting](#troubleshooting)
- [Beitragen](#beitragen)
- [Lizenz](#lizenz)
- [Support](#support)
- [Changelog](#changelog)
## Ăbersicht
Der SAP SuccessFactors LMS MockServer ist eine vollstĂ€ndige Implementierung eines Mock-Servers, der die SAP SuccessFactors Learning Management System (LMS) API emuliert. Dieser Server wurde basierend auf der offiziellen SAP SuccessFactors Learning OData APIs Dokumentation entwickelt und unterstĂŒtzt alle 36 dokumentierten API-Endpunkte mit realistischen Mock-Daten.
**Basis-URL:** `http://localhost:5001`
## Features
### đ VollstĂ€ndige API-Abdeckung
- **36 API-Endpunkte** vollstÀndig implementiert
- **OData v4** konforme Responses
- **REST API** Endpunkte fĂŒr Partner-Integration
- **Metadata-Endpunkte** fĂŒr alle Services
- **CRUD-Operationen** fĂŒr Daten-Endpunkte
### đ Realistische Mock-Daten
- Separate JSON-Dateien fĂŒr jeden Endpunkt
- Strukturierte Daten entsprechend der API-Spezifikation
- Realistische Beispieldaten fĂŒr bessere Tests
- Konsistente Datenbeziehungen zwischen Endpunkten
### đ ïž Entwicklerfreundlich
- **CORS-UnterstĂŒtzung** fĂŒr Frontend-Integration
- **Detaillierte Logging** fĂŒr Debugging
- **Flexible Konfiguration** ĂŒber Umgebungsvariablen
- **Docker-ready** fĂŒr einfache Bereitstellung
## Architektur
### Technologie-Stack
- **Flask** - Python Web Framework
- **Flask-CORS** - Cross-Origin Resource Sharing
- **SQLAlchemy** - Database ORM
- **JSON** - Mock-Daten-Storage
- **Python 3.13** - Runtime Environment
### Projektstruktur
```
sap-lms-mockserver/
âââ src/
â âââ main.py # Hauptanwendung
â âââ routes/
â â âââ user.py # Beispiel-Routen
â â âââ sap_lms_api.py # SAP LMS API Routen
â âââ models/
â â âââ user.py # Datenmodelle
â âââ mock_data/ # Mock-Daten-Dateien
â â âââ partner_extract_config.json
â â âââ admin_curriculum_service_metadata.json
â â âââ catalog_courses.json
â â âââ ... (weitere 30+ Dateien)
â âââ database/ # SQLite-Datenbank
â âââ static/ # Statische Dateien
âââ docs/ # Dokumentation
â âââ API_DOCUMENTATION.md # Detaillierte API-Dokumentation
âââ Dockerfile # Docker-Konfiguration
âââ docker-compose.yml # Docker Compose
âââ requirements.txt # Python-AbhĂ€ngigkeiten
âââ LICENSE # MIT-Lizenz
âââ README.md # Projekt-Dokumentation
```
## Installation
### Voraussetzungen
- Python 3.13 oder höher
- pip (Python Package Manager)
- Git (fĂŒr Klonen des Repositories)
### đ Lokale Installation
1. **Repository klonen**
```bash
git clone
cd sap-lms-mockserver
```
2. **Virtuelle Umgebung erstellen und aktivieren**
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# oder
venv\Scripts\activate # Windows
```
3. **AbhÀngigkeiten installieren**
```bash
pip install -r requirements.txt
```
4. **Server starten**
```bash
python src/main.py
```
Der Server lĂ€uft standardmĂ€Ăig auf `http://localhost:5001`
### đł Docker Installation
```bash
# Docker Image erstellen
docker build -t sap-lms-mockserver .
# Container starten
docker run -p 5001:5001 sap-lms-mockserver
# Oder mit Docker Compose
docker-compose up -d
```
## Konfiguration
### Umgebungsvariablen
| Variable | Beschreibung | Standard |
|----------|-------------|----------|
| `FLASK_ENV` | Umgebung (development/production) | `production` |
| `FLASK_DEBUG` | Debug-Modus | `False` |
| `PORT` | Server-Port | `5001` |
| `HOST` | Server-Host | `0.0.0.0` |
### Beispiel .env Datei
```env
FLASK_ENV=development
FLASK_DEBUG=True
PORT=5001
HOST=0.0.0.0
```
## API-Dokumentation
Eine detaillierte API-Dokumentation mit allen Endpunkten, Parametern und Beispielen finden Sie in der [**API_DOCUMENTATION.md**](docs/API_DOCUMENTATION.md).
### đ§ Schnellstart - Wichtige Endpunkte
#### Health Check
```bash
curl -X GET http://localhost:5001/health
```
#### Partner Extract Configuration
```bash
curl -X GET "http://localhost:5001/learning/public-api/rest/v1/partnerExtractConfig?partnerID=PARTNER001"
```
#### Curriculum Service
```bash
curl -X GET "http://localhost:5001/learning/odatav4/public/admin/curriculum-service/v1/Curricula"
```
### đ API-Kategorien
- **System-Endpunkte** - Health Check, Root Information
- **Partner Extract Services** - Konfiguration und Datenextraktion
- **Curriculum Services** - Admin und User Curriculum Management
- **Learning Event Services** - Lernereignisse und externe Events
- **Scheduled Offering Services** - Geplante Kursangebote
- **Search Services** - Suche nach Programmen, Studenten und Items
- **User Assignment Services** - Benutzer-Zuweisungen (v1 und v2)
- **User Learning Service** - Lernhistorie und Fortschritte
- **User Services** - Benutzerverwaltung und Genehmigungen
- **Catalog Services** - Katalogsuche und -verwaltung
- **Financial Transactions** - Finanztransaktionen
### đ OData v4 UnterstĂŒtzung
Der Server unterstĂŒtzt alle wichtigen OData v4 Query-Parameter:
- `$filter` - Filterung der Ergebnisse
- `$select` - Auswahl spezifischer Felder
- `$expand` - Erweitern verwandter EntitÀten
- `$orderby` - Sortierung der Ergebnisse
- `$top` - Begrenzung der Anzahl Ergebnisse
- `$skip` - Ăberspringen von Ergebnissen
- `$count` - Anzahl der Ergebnisse einschlieĂen
**Beispiel:**
```bash
curl "http://localhost:5001/learning/odatav4/public/admin/curriculum-service/v1/Curricula?\$filter=status eq 'Active'&\$select=curriculumID,title&\$top=10"
```
## Testing
### đ§Ș Manuelle Tests
#### cURL-Beispiele
```bash
# Health Check
curl -X GET http://localhost:5001/health
# Partner Extract Config
curl -X GET "http://localhost:5001/learning/public-api/rest/v1/partnerExtractConfig?partnerID=PARTNER001"
# Curriculum Metadata
curl -X GET "http://localhost:5001/learning/odatav4/public/admin/curriculum-service/v1/\$metadata"
```
#### Browser-Tests
Einfache GET-Endpunkte können direkt im Browser getestet werden:
- `http://localhost:5001/health`
- `http://localhost:5001/`
- `http://localhost:5001/learning/odatav4/public/admin/curriculum-service/v1/$metadata`
### đŹ Automatisierte Tests
```python
import unittest
import requests
class TestSAPLMSMockServer(unittest.TestCase):
BASE_URL = "http://localhost:5001"
def test_health_check(self):
response = requests.get(f"{self.BASE_URL}/health")
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["status"], "healthy")
def test_partner_extract_config(self):
response = requests.get(
f"{self.BASE_URL}/learning/public-api/rest/v1/partnerExtractConfig",
params={"partnerID": "PARTNER001"}
)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["restOperationStatusVOX"]["status"], "SUCCESS")
```
## Deployment
### đ„ïž Lokale Entwicklung
```bash
# Entwicklungsserver starten
python src/main.py
```
### đ Produktions-Deployment
#### Mit Gunicorn
```bash
# Gunicorn installieren
pip install gunicorn
# Server mit Gunicorn starten
gunicorn --bind 0.0.0.0:5001 --workers 4 src.main:app
```
#### Mit systemd (Linux)
```ini
# /etc/systemd/system/sap-lms-mockserver.service
[Unit]
Description=SAP LMS MockServer
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/sap-lms-mockserver
ExecStart=/opt/sap-lms-mockserver/venv/bin/gunicorn --bind 0.0.0.0:5001 --workers 4 src.main:app
Restart=always
[Install]
WantedBy=multi-user.target
```
## Docker
### đł Docker-Befehle
```bash
# Image erstellen
docker build -t sap-lms-mockserver .
# Container starten
docker run -p 5001:5001 sap-lms-mockserver
# Container im Hintergrund ausfĂŒhren
docker run -d -p 5001:5001 --name sap-lms-server sap-lms-mockserver
# Container-Logs anzeigen
docker logs sap-lms-server
# Container stoppen
docker stop sap-lms-server
```
### Docker Compose
```yaml
version: '3.8'
services:
sap-lms-mockserver:
build: .
ports:
- "5001:5001"
environment:
- FLASK_ENV=production
- FLASK_DEBUG=False
volumes:
- ./src/database:/app/src/database
restart: unless-stopped
```
```bash
# Service starten
docker-compose up -d
# Service stoppen
docker-compose down
# Logs anzeigen
docker-compose logs -f
```
## Anpassung
### đ ïž Mock-Daten anpassen
Mock-Daten können einfach durch Bearbeitung der JSON-Dateien im `src/mock_data/` Verzeichnis angepasst werden:
1. **Neue Daten hinzufĂŒgen:** Neue Objekte zu den Arrays hinzufĂŒgen
2. **Bestehende Daten Àndern:** Werte in den JSON-Objekten modifizieren
3. **Neue Endpunkte:** Neue JSON-Dateien erstellen und entsprechende Routen hinzufĂŒgen
### đ§ Neue Endpunkte hinzufĂŒgen
```python
@sap_lms_bp.route('/new/endpoint/v1/$metadata', methods=['GET'])
def new_endpoint_metadata():
"""Get new endpoint metadata"""
data = load_mock_data('new_endpoint_metadata.json')
return jsonify(data)
```
### đ Logging konfigurieren
```python
import logging
# Logging konfigurieren
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
```
## Troubleshooting
### đš HĂ€ufige Probleme
#### Port bereits belegt
```bash
# Anderen Port verwenden
python src/main.py --port 5002
# Prozess auf Port 5001 finden und beenden
lsof -ti:5001 | xargs kill -9
```
#### CORS-Fehler
```python
# CORS fĂŒr spezifische Origins konfigurieren
CORS(app, origins=['http://localhost:3000', 'http://localhost:8080'])
```
#### Mock-Daten nicht gefunden
```bash
# ĂberprĂŒfen, ob Dateien existieren
ls src/mock_data/
# Pfade in load_mock_data() ĂŒberprĂŒfen
```
#### Virtuelle Umgebung Probleme
```bash
# Neue virtuelle Umgebung erstellen
python -m venv new_venv
source new_venv/bin/activate
pip install -r requirements.txt
```
### đ Debug-Modus
```python
# Debug-Informationen aktivieren
app.run(host='0.0.0.0', port=5001, debug=True)
# Detaillierte Logs
import logging
logging.getLogger('flask').setLevel(logging.DEBUG)
```
## Beitragen
### đ„ Entwicklungsrichtlinien
1. **Code-Stil:** PEP 8 befolgen
2. **Dokumentation:** Alle neuen Funktionen dokumentieren
3. **Tests:** Tests fĂŒr neue Endpunkte hinzufĂŒgen
4. **Mock-Daten:** Realistische und konsistente Daten verwenden
### đ Pull Requests
1. Fork des Repositories erstellen
2. Feature-Branch erstellen (`git checkout -b feature/amazing-feature`)
3. Ănderungen committen (`git commit -m 'Add amazing feature'`)
4. Branch pushen (`git push origin feature/amazing-feature`)
5. Pull Request erstellen
## Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Siehe [LICENSE](LICENSE) fĂŒr Details.
## Support
### đ Hilfe und UnterstĂŒtzung
- **GitHub Issues:** Bug-Reports und Feature-Requests
- **API-Dokumentation:** Detaillierte Endpunkt-Informationen in [API_DOCUMENTATION.md](docs/API_DOCUMENTATION.md)
- **Community:** Diskussionen ĂŒber GitHub Discussions
### đ Schnelle Hilfe
| Problem | Lösung |
|---------|--------|
| Server startet nicht | Port-Konflikt prĂŒfen, Dependencies installieren |
| API-Antworten fehlerhaft | Mock-Daten validieren, Logs prĂŒfen |
| CORS-Probleme | CORS-Konfiguration anpassen |
| Docker-Probleme | Dockerfile und docker-compose.yml prĂŒfen |
## Changelog
### đ Version 1.0.0 (Juli 2025)
- â
Initiale Implementierung aller 36 SAP LMS API Endpunkte
- â
VollstĂ€ndige OData v4 UnterstĂŒtzung
- â
Realistische Mock-Daten fĂŒr alle Services
- â
CORS-UnterstĂŒtzung fĂŒr Frontend-Integration
- â
Docker-UnterstĂŒtzung
- â
Umfassende Dokumentation und Beispiele
- â
SQLAlchemy-Integration fĂŒr Datenpersistenz
- â
Automatisierte Tests und CI/CD-Pipeline
---
**đ§ Entwickelt mit UnterstĂŒtzung von [Manus AI](https://manus.im)**