All files / src/cmap/auth/mongodb_oidc token_machine_workflow.ts

100% Statements 11/11
100% Branches 2/2
100% Functions 2/2
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35412x   412x 412x       412x             412x         14x             16x 16x 4x   12x 12x      
import * as fs from 'fs';
 
import { MongoAWSError } from '../../../error';
import { type AccessToken, MachineWorkflow } from './machine_workflow';
import { type TokenCache } from './token_cache';
 
/** Error for when the token is missing in the environment. */
const TOKEN_MISSING_ERROR = 'OIDC_TOKEN_FILE must be set in the environment.';
 
/**
 * Device workflow implementation for AWS.
 *
 * @internal
 */
export class TokenMachineWorkflow extends MachineWorkflow {
  /**
   * Instantiate the machine workflow.
   */
  constructor(cache: TokenCache) {
    super(cache);
  }
 
  /**
   * Get the token from the environment.
   */
  async getToken(): Promise<AccessToken> {
    const tokenFile = process.env.OIDC_TOKEN_FILE;
    if (!tokenFile) {
      throw new MongoAWSError(TOKEN_MISSING_ERROR);
    }
    const token = await fs.promises.readFile(tokenFile, 'utf8');
    return { access_token: token };
  }
}