Skip to content

Commit 62a2dfc

Browse files
Merge branch 'main' into callHookViaGateway
2 parents bb3a7cf + 83230d5 commit 62a2dfc

71 files changed

Lines changed: 11944 additions & 498 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env_integration_tests.example

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,54 @@
11
CLOUD_SDK_OTEL_DISABLED=true
22

3+
# ADMS
4+
CLOUD_SDK_CFG_ADMS_DEFAULT_CLIENTID=your-adms-client-id-here
5+
CLOUD_SDK_CFG_ADMS_DEFAULT_CLIENTSECRET=your-adms-client-secret-here
6+
CLOUD_SDK_CFG_ADMS_DEFAULT_URL=https://your-tenant.accounts.ondemand.com
7+
CLOUD_SDK_CFG_ADMS_DEFAULT_URI=https://your-adm-host.cfapps.eu20.hana.ondemand.com
8+
CLOUD_SDK_CFG_ADMS_DEFAULT_RESOURCE=urn:sap:identity:application:provider:name:your-adm-app-name
9+
10+
# AGENT GATEWAY
11+
CLOUD_SDK_CFG_AGW_DEFAULT_LANDSCAPE=your-landscape-here
12+
CLOUD_SDK_CFG_AGW_DEFAULT_TENANT_SUBDOMAIN=your-tenant-subdomain-here
13+
CLOUD_SDK_CFG_AGW_DEFAULT_USER_TOKEN=your-user-jwt-here
14+
15+
# AGENT MEMORY
16+
CLOUD_SDK_CFG_HANA_AGENT_MEMORY_DEFAULT_APPLICATION_URL=https://your-agent-memory-api-url-here
17+
CLOUD_SDK_CFG_HANA_AGENT_MEMORY_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret"}'
18+
19+
# AI CORE (required for Traceloop/LangGraph integration tests)
20+
AICORE_CLIENT_ID=your-aicore-client-id-here
21+
AICORE_CLIENT_SECRET=your-aicore-client-secret-here
22+
AICORE_AUTH_URL=https://your-aicore-auth-url-here/oauth/token
23+
AICORE_BASE_URL=https://your-aicore-api-url-here/v2
24+
AICORE_RESOURCE_GROUP=default
25+
AICORE_MODEL=anthropic--claude-3-5-haiku
26+
27+
# AUDITLOG
328
CLOUD_SDK_CFG_AUDITLOG_DEFAULT_URL=https://your-auditlog-api-url-here
429
CLOUD_SDK_CFG_AUDITLOG_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret"}'
530

6-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_HOST=your-objectstore-host-here
7-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_ACCESS_KEY_ID=your-access-key-id-here
8-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_SECRET_ACCESS_KEY=your-secret-access-key-here
9-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_BUCKET=your-bucket-name-here
31+
# DATA ANONYMIZATION
32+
CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_URL=https://your-data-anonymization-api-url-here
33+
CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_CERT=your-base64-encoded-client-certificate-pem
34+
CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_KEY=your-base64-encoded-client-private-key-pem
35+
# Alternative to inline base64 cert/key values:
36+
# CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_DESTINATION_NAME=your-client-certificate-destination-name
1037

38+
# DESTINATION
1139
CLOUD_SDK_CFG_DESTINATION_DEFAULT_CLIENTID=your-destination-client-id-here
1240
CLOUD_SDK_CFG_DESTINATION_DEFAULT_CLIENTSECRET=your-destination-client-secret-here
1341
CLOUD_SDK_CFG_DESTINATION_DEFAULT_URL=https://your-destination-auth-url-here
1442
CLOUD_SDK_CFG_DESTINATION_DEFAULT_URI=https://your-destination-configuration-uri-here
1543
CLOUD_SDK_CFG_DESTINATION_DEFAULT_IDENTITYZONE=your-identity-zone-here
44+
CLOUD_SDK_CFG_DESTINATION_DEFAULT_TENANT_SUBDOMAIN=your-subscriber-tenant-subdomain-here
1645

17-
CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_URL=https://your-data-anonymization-api-url-here
18-
CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_CERT=your-base64-encoded-client-certificate-pem
19-
CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_KEY=your-base64-encoded-client-private-key-pem
20-
# Alternative to inline base64 cert/key values:
21-
# CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_DESTINATION_NAME=your-client-certificate-destination-name
22-
46+
# DMS
2347
CLOUD_SDK_CFG_SDM_DEFAULT_URI=https://your-sdm-api-uri-here
2448
CLOUD_SDK_CFG_SDM_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret","identityzone":"your-identity-zone"}'
2549

26-
CLOUD_SDK_CFG_HANA_AGENT_MEMORY_DEFAULT_APPLICATION_URL=https://your-agent-memory-api-url-here
27-
CLOUD_SDK_CFG_HANA_AGENT_MEMORY_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret"}'
28-
29-
APPFND_CONHOS_LANDSCAPE=your-landscape-here
30-
TENANT_SUBDOMAIN=your-tenant-subdomain-here
31-
AGW_USER_TOKEN=your-user-jwt-here
32-
33-
# AI Core — required for Traceloop/LangGraph integration tests
34-
AICORE_CLIENT_ID=your-aicore-client-id-here
35-
AICORE_CLIENT_SECRET=your-aicore-client-secret-here
36-
AICORE_AUTH_URL=https://your-aicore-auth-url-here/oauth/token
37-
AICORE_BASE_URL=https://your-aicore-api-url-here/v2
38-
AICORE_RESOURCE_GROUP=default
39-
AICORE_MODEL=anthropic--claude-3-5-haiku
50+
# OBJECT STORE
51+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_HOST=your-objectstore-host-here
52+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_ACCESS_KEY_ID=your-access-key-id-here
53+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_SECRET_ACCESS_KEY=your-secret-access-key-here
54+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_BUCKET=your-bucket-name-here

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,6 @@ mocks/
3939
# Generated files
4040
PULL_REQUEST.md
4141
RELEASE.md
42+
43+
# macOS metadata
44+
.DS_Store

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ The Python SDK offers a clean, type-safe API following Python best practices whi
2424
- **Secret Resolver**
2525
- **Telemetry & Observability**
2626
- **Data Anonymization Service**
27+
- **Print Service**
2728

2829
## Requirements and Setup
2930

@@ -77,6 +78,7 @@ Each module has comprehensive usage guides:
7778
- [ObjectStore](src/sap_cloud_sdk/objectstore/user-guide.md)
7879
- [Secret Resolver](src/sap_cloud_sdk/core/secret_resolver/user-guide.md)
7980
- [Telemetry](src/sap_cloud_sdk/core/telemetry/user-guide.md)
81+
- [Print](src/sap_cloud_sdk/print/user-guide.md)
8082
- [Data Anonymization](src/sap_cloud_sdk/core/data_anonymization/user-guide.md)
8183

8284
## Support, Feedback, Contributing

docs/INTEGRATION_TESTS.md

Lines changed: 69 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -26,42 +26,42 @@ uv sync --all-extras
2626

2727
Integration tests require specific environment variables to be configured. These are managed through the `.env_integration_tests` file in the project root.
2828

29-
### ObjectStore Integration Tests
30-
31-
For ObjectStore integration tests, configure the following variables in `.env_integration_tests`:
32-
33-
```bash
34-
# ObjectStore Configuration
35-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_HOST=your-host-here
36-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_ACCESS_KEY_ID=your-access-key-id-here
37-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_SECRET_ACCESS_KEY=your-secret-access-key-kere
38-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_BUCKET=your-bucket-here
39-
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_SSL_ENABLED=false
40-
```
29+
### ADMS Integration Tests
4130

42-
### AuditLog Integration Tests
43-
44-
For AuditLog integration tests, configure the following variables in `.env_integration_tests`:
31+
For ADMS (Advanced Document Management Service) integration tests, configure the following variables in `.env_integration_tests`:
4532

4633
```bash
47-
# AuditLog Configuration
48-
CLOUD_SDK_CFG_AUDITLOG_DEFAULT_URL=https://your-auditlog-api-url-here
49-
CLOUD_SDK_CFG_AUDITLOG_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret"}'
34+
# ADMS Configuration
35+
CLOUD_SDK_CFG_ADMS_DEFAULT_URL=https://your-tenant.accounts.ondemand.com
36+
CLOUD_SDK_CFG_ADMS_DEFAULT_URI=https://your-adm-instance.cfapps.eu20.hana.ondemand.com
37+
CLOUD_SDK_CFG_ADMS_DEFAULT_CLIENTID=your-ias-client-id
38+
CLOUD_SDK_CFG_ADMS_DEFAULT_CLIENTSECRET=your-ias-client-secret
39+
CLOUD_SDK_CFG_ADMS_DEFAULT_RESOURCE=urn:sap:identity:application:provider:name:your-app
5040
```
5141

52-
**Note**: AuditLog integration tests are cloud-only and require real SAP Audit Log Service credentials. The secret resolver automatically loads configuration from `/etc/secrets/appfnd` or environment variables - no manual configuration parsing needed in test code.
42+
`CLOUD_SDK_CFG_ADMS_DEFAULT_URI` points the tests at the target ADM service. The other `CLOUD_SDK_CFG_ADMS_DEFAULT_*` variables hold the IAS service-binding credentials used by the SDK to fetch Bearer tokens. Tests are skipped automatically when any of these are missing.
5343

54-
### Destination Integration Tests
44+
### Agent Gateway Integration Tests
5545

56-
For Destination integration tests, configure the following variables in `.env_integration_tests`:
46+
Agent Gateway integration tests use the LoB agent flow via the Destination Service. Configure the following variables in `.env_integration_tests`:
5747

5848
```bash
59-
# Destination Configuration
49+
# Destination Service (required by the LoB agent flow)
6050
CLOUD_SDK_CFG_DESTINATION_DEFAULT_CLIENTID=your-destination-client-id-here
6151
CLOUD_SDK_CFG_DESTINATION_DEFAULT_CLIENTSECRET=your-destination-client-secret-here
6252
CLOUD_SDK_CFG_DESTINATION_DEFAULT_URL=https://your-destination-auth-url-here
6353
CLOUD_SDK_CFG_DESTINATION_DEFAULT_URI=https://your-destination-configuration-uri-here
6454
CLOUD_SDK_CFG_DESTINATION_DEFAULT_IDENTITYZONE=your-identity-zone-here
55+
56+
# Landscape suffix used to resolve the IAS destination name
57+
CLOUD_SDK_CFG_AGW_DEFAULT_LANDSCAPE=your-landscape-here
58+
59+
# Tenant subdomain for multi-tenant lookup
60+
CLOUD_SDK_CFG_AGW_DEFAULT_TENANT_SUBDOMAIN=your-tenant-subdomain-here
61+
62+
# User JWT for token exchange scenarios (get_user_auth)
63+
# If not set, user auth scenarios are automatically skipped
64+
CLOUD_SDK_CFG_AGW_DEFAULT_USER_TOKEN=your-user-jwt-here
6565
```
6666

6767
### Agent Memory Integration Tests
@@ -74,6 +74,18 @@ CLOUD_SDK_CFG_HANA_AGENT_MEMORY_DEFAULT_APPLICATION_URL=https://your-agent-memor
7474
CLOUD_SDK_CFG_HANA_AGENT_MEMORY_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret"}'
7575
```
7676

77+
### AuditLog Integration Tests
78+
79+
For AuditLog integration tests, configure the following variables in `.env_integration_tests`:
80+
81+
```bash
82+
# AuditLog Configuration
83+
CLOUD_SDK_CFG_AUDITLOG_DEFAULT_URL=https://your-auditlog-api-url-here
84+
CLOUD_SDK_CFG_AUDITLOG_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret"}'
85+
```
86+
87+
**Note**: AuditLog integration tests are cloud-only and require real SAP Audit Log Service credentials. The secret resolver automatically loads configuration from `/etc/secrets/appfnd` or environment variables - no manual configuration parsing needed in test code.
88+
7789
### Data Anonymization Integration Tests
7890

7991
For Data Anonymization integration tests, configure the following variables in `.env_integration_tests`:
@@ -96,27 +108,47 @@ CLOUD_SDK_CFG_DATA_ANONYMIZATION_DEFAULT_DESTINATION_NAME=your-client-certificat
96108

97109
The destination must be configured with `ClientCertificateAuthentication` and reference a certificate bundle containing the client certificate and private key.
98110

99-
### Agent Gateway Integration Tests
111+
### Destination Integration Tests
100112

101-
Agent Gateway integration tests use the LoB agent flow via the Destination Service. Configure the following variables in `.env_integration_tests`:
113+
For Destination integration tests, configure the following variables in `.env_integration_tests`:
102114

103115
```bash
104-
# Destination Service (required by the LoB agent flow)
116+
# Destination Configuration
105117
CLOUD_SDK_CFG_DESTINATION_DEFAULT_CLIENTID=your-destination-client-id-here
106118
CLOUD_SDK_CFG_DESTINATION_DEFAULT_CLIENTSECRET=your-destination-client-secret-here
107119
CLOUD_SDK_CFG_DESTINATION_DEFAULT_URL=https://your-destination-auth-url-here
108120
CLOUD_SDK_CFG_DESTINATION_DEFAULT_URI=https://your-destination-configuration-uri-here
109121
CLOUD_SDK_CFG_DESTINATION_DEFAULT_IDENTITYZONE=your-identity-zone-here
110122

111-
# Landscape suffix used to resolve the IAS destination name
112-
APPFND_CONHOS_LANDSCAPE=your-landscape-here
123+
# Optional: subscriber tenant subdomain for multi-tenant scenarios
124+
# When set, scenarios using SUBSCRIBER_FIRST, SUBSCRIBER_ONLY, and PROVIDER_FIRST are executed.
125+
# When not set, those scenarios are automatically skipped.
126+
CLOUD_SDK_CFG_DESTINATION_DEFAULT_TENANT_SUBDOMAIN=your-subscriber-tenant-subdomain-here
127+
```
113128

114-
# Tenant subdomain for multi-tenant lookup
115-
TENANT_SUBDOMAIN=your-tenant-subdomain-here
129+
### DMS Integration Tests
116130

117-
# User JWT for token exchange scenarios (get_user_auth)
118-
# If not set, user auth scenarios are automatically skipped
119-
AGW_USER_TOKEN=your-user-jwt-here
131+
For DMS (Document Management Service) integration tests, configure the following variables in `.env_integration_tests`:
132+
133+
```bash
134+
# DMS Configuration
135+
CLOUD_SDK_CFG_SDM_DEFAULT_URI=https://your-sdm-api-uri-here
136+
CLOUD_SDK_CFG_SDM_DEFAULT_UAA='{"url":"https://your-auth-url","clientid":"your-client-id","clientsecret":"your-client-secret","identityzone":"your-identity-zone"}'
137+
```
138+
139+
**Note**: The test fixture automatically onboards test repositories (standard and version-enabled) at session start and cleans them up on teardown. No pre-existing repositories are required.
140+
141+
### ObjectStore Integration Tests
142+
143+
For ObjectStore integration tests, configure the following variables in `.env_integration_tests`:
144+
145+
```bash
146+
# ObjectStore Configuration
147+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_HOST=your-host-here
148+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_ACCESS_KEY_ID=your-access-key-id-here
149+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_SECRET_ACCESS_KEY=your-secret-access-key-kere
150+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_BUCKET=your-bucket-here
151+
CLOUD_SDK_CFG_OBJECTSTORE_DEFAULT_SSL_ENABLED=false
120152
```
121153

122154
## Running Integration Tests
@@ -126,12 +158,14 @@ AGW_USER_TOKEN=your-user-jwt-here
126158
uv run pytest tests/ -m integration -v
127159

128160
# Run specific module integration tests
161+
uv run pytest tests/adms/integration/ -v
162+
uv run pytest tests/agentgateway/integration/ -v
163+
uv run pytest tests/agent_memory/integration/ -v
129164
uv run pytest tests/core/integration/auditlog -v
130165
uv run pytest tests/core/integration/data_anonymization -v
131-
uv run pytest tests/objectstore/integration/ -v
132166
uv run pytest tests/destination/integration/ -v
133-
uv run pytest tests/agent_memory/integration/ -v
134-
uv run pytest tests/agentgateway/integration/ -v
167+
uv run pytest tests/dms/integration/ -v
168+
uv run pytest tests/objectstore/integration/ -v
135169
```
136170

137171
### BDD Scenarios

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "sap-cloud-sdk"
3-
version = "0.25.3"
3+
version = "0.27.1"
44
description = "SAP Cloud SDK for Python"
55
readme = "README.md"
66
license = "Apache-2.0"

0 commit comments

Comments
 (0)