55 * Rocket.Chat instances, Matrix homeservers, and user credentials needed
66 * for end-to-end federation testing.
77 */
8- export interface IFederationConfig {
9- rc1 : {
10- apiUrl : string ;
11- adminUser : string ;
12- adminPassword : string ;
13- adminMatrixUserId : string ;
14- additionalUser1 : {
15- username : string ;
16- password : string ;
17- matrixUserId : string ;
18- } ;
19- } ;
20- hs1 : {
21- url : string ;
22- adminMatrixUserId : string ;
8+
9+ type FederationServerConfig = {
10+ url : string ;
11+ domain : string ;
12+ adminUser : string ;
13+ adminPassword : string ;
14+ adminMatrixUserId : string ;
15+ additionalUser1 : {
16+ username : string ;
2317 password : string ;
24- homeserver : string ;
25- adminUser : string ;
26- adminPassword : string ;
27- additionalUser1 : {
28- username : string ;
29- password : string ;
30- matrixUserId : string ;
31- } ;
18+ matrixUserId : string ;
3219 } ;
20+ } ;
21+ export interface IFederationConfig {
22+ rc1 : FederationServerConfig ;
23+ hs1 : FederationServerConfig ;
3324}
3425
3526/**
@@ -40,13 +31,12 @@ export interface IFederationConfig {
4031 * Throws an error if a required variable is missing or empty.
4132 *
4233 * @param name - The name of the environment variable for error messages
43- * @param value - The environment variable value (may be undefined)
4434 * @param defaultValue - Optional default value to use if variable is not set
4535 * @returns The validated value (either the env var or default)
4636 * @throws Error if the variable is required but missing or empty
4737 */
48- function validateEnvVar ( name : string , value : string | undefined , defaultValue ?: string ) : string {
49- const finalValue = value || defaultValue ;
38+ function validateEnvVar ( name : string , defaultValue ?: string ) : string {
39+ const finalValue = process . env [ name ] || defaultValue ;
5040 if ( ! finalValue || finalValue . trim ( ) === '' ) {
5141 throw new Error ( `Required environment variable ${ name } is not set or is empty` ) ;
5242 }
@@ -65,45 +55,41 @@ function validateEnvVar(name: string, value: string | undefined, defaultValue?:
6555 * @throws Error if any required configuration is missing or invalid
6656 */
6757function getFederationConfig ( ) : IFederationConfig {
58+ const rcDomain = validateEnvVar ( 'FEDERATION_RC1_DOMAIN' , 'rc1' ) ;
59+ const rcAdminUser = validateEnvVar ( 'FEDERATION_RC1_ADMIN_USER' , 'admin' ) ;
60+ const rcAdminPassword = validateEnvVar ( 'FEDERATION_RC1_ADMIN_PASSWORD' , 'admin' ) ;
61+ const rcAdditionalUser1 = validateEnvVar ( 'FEDERATION_RC1_ADDITIONAL_USER1' , 'user2' ) ;
62+ const rcAdditionalUser1Password = validateEnvVar ( 'FEDERATION_RC1_ADDITIONAL_USER1_PASSWORD' , 'user2pass' ) ;
63+
64+ const hs1Domain = validateEnvVar ( 'FEDERATION_SYNAPSE_DOMAIN' , 'hs1' ) ;
65+ const hs1AdminUser = validateEnvVar ( 'FEDERATION_SYNAPSE_ADMIN_USER' , 'admin' ) ;
66+ const hs1AdminPassword = validateEnvVar ( 'FEDERATION_SYNAPSE_ADMIN_PASSWORD' , 'admin' ) ;
67+ const hs1AdditionalUser1 = validateEnvVar ( 'FEDERATION_SYNAPSE_ADDITIONAL_USER1' , 'alice' ) ;
68+ const hs1AdditionalUser1Password = validateEnvVar ( 'FEDERATION_SYNAPSE_ADDITIONAL_USER1_PASSWORD' , 'alice' ) ;
69+
6870 return {
6971 rc1 : {
70- apiUrl : validateEnvVar ( 'FEDERATION_RC1_API_URL' , process . env . FEDERATION_RC1_API_URL , 'https://rc1' ) ,
71- adminUser : validateEnvVar ( 'FEDERATION_RC1_ADMIN_USER' , process . env . FEDERATION_RC1_ADMIN_USER , 'admin' ) ,
72- adminPassword : validateEnvVar ( 'FEDERATION_RC1_ADMIN_PASSWORD' , process . env . FEDERATION_RC1_ADMIN_PASSWORD , 'admin' ) ,
73- adminMatrixUserId : validateEnvVar ( 'FEDERATION_RC1_USER_ID' , process . env . FEDERATION_RC1_USER_ID , '@admin:rc1' ) ,
72+ url : `https://${ rcDomain } ` ,
73+ domain : rcDomain ,
74+ adminUser : rcAdminUser ,
75+ adminPassword : rcAdminPassword ,
76+ adminMatrixUserId : `@${ rcAdminUser } :${ rcDomain } ` ,
7477 additionalUser1 : {
75- username : validateEnvVar ( 'FEDERATION_RC1_ADDITIONAL_USER1' , process . env . FEDERATION_RC1_ADDITIONAL_USER1 , 'user2' ) ,
76- password : validateEnvVar (
77- 'FEDERATION_RC1_ADDITIONAL_USER1_PASSWORD' ,
78- process . env . FEDERATION_RC1_ADDITIONAL_USER1_PASSWORD ,
79- 'user2pass' ,
80- ) ,
81- matrixUserId : validateEnvVar (
82- 'FEDERATION_RC1_ADDITIONAL_USER1_MATRIX_ID' ,
83- process . env . FEDERATION_RC1_ADDITIONAL_USER1_MATRIX_ID ,
84- '@user2:rc1' ,
85- ) ,
78+ username : rcAdditionalUser1 ,
79+ password : rcAdditionalUser1Password ,
80+ matrixUserId : `@${ rcAdditionalUser1 } :${ rcDomain } ` ,
8681 } ,
8782 } ,
8883 hs1 : {
89- url : validateEnvVar ( 'FEDERATION_SYNAPSE_URL' , process . env . FEDERATION_SYNAPSE_URL , 'https://hs1' ) ,
90- adminMatrixUserId : validateEnvVar ( 'FEDERATION_SYNAPSE_USER' , process . env . FEDERATION_SYNAPSE_USER , '@admin:hs1' ) ,
91- password : validateEnvVar ( 'FEDERATION_SYNAPSE_PASSWORD' , process . env . FEDERATION_SYNAPSE_PASSWORD , 'admin' ) ,
92- homeserver : validateEnvVar ( 'FEDERATION_SYNAPSE_HOMESERVER' , process . env . FEDERATION_SYNAPSE_HOMESERVER , 'hs1' ) ,
93- adminUser : validateEnvVar ( 'FEDERATION_SYNAPSE_ADMIN_USER' , process . env . FEDERATION_SYNAPSE_ADMIN_USER , 'admin' ) ,
94- adminPassword : validateEnvVar ( 'FEDERATION_SYNAPSE_ADMIN_PASSWORD' , process . env . FEDERATION_SYNAPSE_ADMIN_PASSWORD , 'admin' ) ,
84+ url : `https://${ hs1Domain } ` ,
85+ domain : hs1Domain ,
86+ adminUser : hs1AdminUser ,
87+ adminMatrixUserId : `@${ hs1AdminUser } :${ hs1Domain } ` ,
88+ adminPassword : hs1AdminPassword ,
9589 additionalUser1 : {
96- username : validateEnvVar ( 'FEDERATION_SYNAPSE_ADDITIONAL_USER1' , process . env . FEDERATION_SYNAPSE_ADDITIONAL_USER1 , 'alice' ) ,
97- password : validateEnvVar (
98- 'FEDERATION_SYNAPSE_ADDITIONAL_USER1_PASSWORD' ,
99- process . env . FEDERATION_SYNAPSE_ADDITIONAL_USER1_PASSWORD ,
100- 'alice' ,
101- ) ,
102- matrixUserId : validateEnvVar (
103- 'FEDERATION_SYNAPSE_ADDITIONAL_USER1_MATRIX_ID' ,
104- process . env . FEDERATION_SYNAPSE_ADDITIONAL_USER1_MATRIX_ID ,
105- '@alice:hs1' ,
106- ) ,
90+ username : hs1AdditionalUser1 ,
91+ password : hs1AdditionalUser1Password ,
92+ matrixUserId : `@${ hs1AdditionalUser1 } :${ hs1Domain } ` ,
10793 } ,
10894 } ,
10995 } ;
0 commit comments