35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { ISubscriberTestContext } from '../interfaces/ITestContext';
|
|
|
|
export class TokenService {
|
|
static generateSubscriberToken(context: ISubscriberTestContext): string {
|
|
try {
|
|
// Try to import the real TokenBuilder if available
|
|
const TokenBuilder = require('phenix-edge-auth');
|
|
const { browser } = require('@wdio/globals');
|
|
|
|
const { capabilities: { browserName, browserVersion, platformName } } = browser;
|
|
|
|
const subscriberTag = `UAT#${new Date().toISOString()}#SubscribeWorkflow#${context.streamKind}#${browserName}@${browserVersion}:${platformName}`;
|
|
|
|
const tokenBuilder = new TokenBuilder()
|
|
.withApplicationId(context.applicationCredentials.id)
|
|
.withSecret(context.applicationCredentials.secret)
|
|
.expiresInSeconds(3600)
|
|
.forChannel(context.channel.channelId)
|
|
.applyTags(subscriberTag);
|
|
|
|
// Add capabilities if they exist
|
|
context.publishDestination.capabilities?.forEach(subscriberCapability =>
|
|
tokenBuilder.withCapability(subscriberCapability)
|
|
);
|
|
|
|
return tokenBuilder.build();
|
|
} catch (error) {
|
|
console.warn('Real TokenBuilder not available, using mock token:', error);
|
|
|
|
// Return mock token for testing
|
|
return `mock-token-${Date.now()}-${context.streamKind}`;
|
|
}
|
|
}
|
|
}
|