initial commit

This commit is contained in:
Hampus Kraft
2026-01-01 20:42:59 +00:00
commit 2f557eda8c
9029 changed files with 1490197 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
# Integration Test Environment Variables (Local Override)
#
# Copy this file to .env.integration.local and fill in your actual Stripe test credentials.
# The .env.integration.local file is gitignored and will NOT be committed.
#
# These values override the defaults in api.env for local development with real Stripe webhooks.
# ===================================================================
# STRIPE TEST CONFIGURATION (Optional - only needed for real webhook testing)
# ===================================================================
# Get your test keys from: https://dashboard.stripe.com/test/apikeys
#
# If not provided, tests will use mock Stripe responses (API calls work, but webhooks won't)
# For full end-to-end testing with real Stripe checkout + webhooks, provide these:
#
# STRIPE_SECRET_KEY=sk_test_YOUR_TEST_KEY_HERE
# STRIPE_WEBHOOK_SECRET=whsec_YOUR_WEBHOOK_SECRET_HERE
# ===================================================================
# NOTES
# ===================================================================
# - cloudflared tunnel is automatically started to expose API for Stripe webhooks
# - LiveKit is automatically started with test configuration
# - Tenor uses MockTenorService automatically (no API key needed)
# - All Stripe price IDs are already configured in api.env
# - This file is only needed if you want to test with REAL Stripe checkout + webhooks

108
tests/integration/env/api.env vendored Normal file
View File

@@ -0,0 +1,108 @@
NODE_ENV=development
SELF_HOSTED=false
RELAX_REGISTRATION_RATE_LIMITS=true
DISABLE_RATE_LIMITS=true
FLUXER_TEST_MODE=true
FLUXER_TEST_TOKEN=integration-token
FLUXER_API_PUBLIC_ENDPOINT=http://localhost:8088/api
FLUXER_APP_ENDPOINT=http://localhost:8088
FLUXER_GATEWAY_ENDPOINT=ws://gateway:8080
FLUXER_MEDIA_ENDPOINT=http://media-proxy:8080
FLUXER_CDN_ENDPOINT=http://minio:9000/fluxer-cdn
FLUXER_MARKETING_ENDPOINT=http://marketing.fluxer.local
FLUXER_ADMIN_ENDPOINT=http://admin.fluxer.local
FLUXER_PATH_MARKETING=/
FLUXER_PATH_ADMIN=/
FLUXER_INVITE_ENDPOINT=http://invites.fluxer.local
FLUXER_GIFT_ENDPOINT=http://gifts.fluxer.local
FLUXER_API_PORT=8080
FLUXER_GATEWAY_WS_PORT=8080
FLUXER_GATEWAY_RPC_PORT=8081
FLUXER_MEDIA_PROXY_PORT=8080
FLUXER_ADMIN_PORT=8080
FLUXER_MARKETING_PORT=8080
FLUXER_GEOIP_PORT=8080
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/fluxer
REDIS_URL=redis://valkey:6379
CASSANDRA_HOSTS=cassandra
CASSANDRA_KEYSPACE=fluxer
CASSANDRA_LOCAL_DC=datacenter1
CASSANDRA_USERNAME=cassandra
CASSANDRA_PASSWORD=cassandra
FLUXER_GATEWAY_RPC_HOST=gateway
FLUXER_GATEWAY_RPC_PORT=8081
GATEWAY_RPC_SECRET=integration-gateway-secret
SUDO_MODE_SECRET=integration-sudo-secret
FLUXER_MEDIA_PROXY_HOST=media-proxy
MEDIA_PROXY_SECRET_KEY=integration-media-secret
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin
AWS_S3_ENDPOINT=http://minio:9000
AWS_S3_BUCKET_CDN=fluxer-cdn
AWS_S3_BUCKET_UPLOADS=fluxer-uploads
AWS_S3_BUCKET_REPORTS=fluxer-reports
AWS_S3_BUCKET_HARVESTS=fluxer-harvests
AWS_S3_BUCKET_DOWNLOADS=fluxer-downloads
PASSKEYS_ENABLED=true
PASSKEY_RP_NAME=Fluxer Integration
PASSKEY_RP_ID=localhost
PASSKEY_ALLOWED_ORIGINS=http://localhost:8088,http://127.0.0.1:8088
EMAIL_ENABLED=false
SENDGRID_API_KEY=
SENDGRID_WEBHOOK_PUBLIC_KEY=
SENDGRID_FROM_EMAIL=integration@example.com
SENDGRID_FROM_NAME=Fluxer
SMS_ENABLED=false
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_VERIFY_SERVICE_SID=
CAPTCHA_ENABLED=false
CAPTCHA_PRIMARY_PROVIDER=none
HCAPTCHA_SITE_KEY=
HCAPTCHA_SECRET_KEY=
TURNSTILE_SITE_KEY=
TURNSTILE_SECRET_KEY=
VOICE_ENABLED=true
LIVEKIT_AUTO_CREATE_DUMMY_DATA=true
LIVEKIT_API_KEY=integration_test_key_12345
LIVEKIT_API_SECRET=integration_test_secret_67890_very_long_secret_key_for_testing_purposes_only
LIVEKIT_WEBHOOK_URL=http://api:8080/webhooks/livekit
LIVEKIT_URL=ws://livekit:7880
SEARCH_ENABLED=true
MEILISEARCH_URL=http://meilisearch:7700
MEILISEARCH_API_KEY=masterKey
STRIPE_ENABLED=true
CLOUDFLARE_PURGE_ENABLED=false
CLOUDFLARE_ZONE_ID=
CLOUDFLARE_API_TOKEN=
CLAMAV_ENABLED=false
CLAMAV_HOST=clamav
CLAMAV_PORT=3310
ADMIN_OAUTH2_CLIENT_ID=
ADMIN_OAUTH2_CLIENT_SECRET=
ADMIN_OAUTH2_AUTO_CREATE=false
YOUTUBE_API_KEY=
AUTO_JOIN_INVITE_CODE=
FLUXER_VISIONARIES_GUILD_ID=
FLUXER_OPERATORS_GUILD_ID=
GEOIP_HOST=geoip
GEOIP_PROVIDER=ipinfo

View File

@@ -0,0 +1,41 @@
# Integration Test Secrets
# Copy this file to secrets.env and fill in your actual values
# The secrets.env file is gitignored and will NOT be committed
# Cloudflare Tunnel (for Stripe webhook delivery)
# Get your tunnel token from: https://dash.cloudflare.com/
# Configure tunnel to proxy to http://api:8080
CLOUDFLARE_TUNNEL_TOKEN=your_tunnel_token_here
# Stripe (test mode credentials)
# Get test credentials from: https://dashboard.stripe.com/test/apikeys
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key_here
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here
# Stripe Price IDs - Monthly Subscriptions
STRIPE_PRICE_ID_MONTHLY_USD=price_your_monthly_usd_price_id
STRIPE_PRICE_ID_MONTHLY_EUR=price_your_monthly_eur_price_id
# Stripe Price IDs - Yearly Subscriptions
STRIPE_PRICE_ID_YEARLY_USD=price_your_yearly_usd_price_id
STRIPE_PRICE_ID_YEARLY_EUR=price_your_yearly_eur_price_id
# Stripe Price IDs - Visionary (Lifetime)
STRIPE_PRICE_ID_VISIONARY_USD=price_your_visionary_usd_price_id
STRIPE_PRICE_ID_VISIONARY_EUR=price_your_visionary_eur_price_id
# Stripe Price IDs - Gifts (Visionary)
STRIPE_PRICE_ID_GIFT_VISIONARY_USD=price_your_gift_visionary_usd_price_id
STRIPE_PRICE_ID_GIFT_VISIONARY_EUR=price_your_gift_visionary_eur_price_id
# Stripe Price IDs - Gifts (1 Month)
STRIPE_PRICE_ID_GIFT_1_MONTH_USD=price_your_gift_1_month_usd_price_id
STRIPE_PRICE_ID_GIFT_1_MONTH_EUR=price_your_gift_1_month_eur_price_id
# Stripe Price IDs - Gifts (1 Year)
STRIPE_PRICE_ID_GIFT_1_YEAR_USD=price_your_gift_1_year_usd_price_id
STRIPE_PRICE_ID_GIFT_1_YEAR_EUR=price_your_gift_1_year_eur_price_id
# Tenor API Key (for GIF search tests)
# Get your API key from: https://developers.google.com/tenor/guides/quickstart
TENOR_API_KEY=your_tenor_api_key_here