Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //timeout.interceptor.ts
- import { Injectable, NestInterceptor, CallHandler, HttpCode } from '@nestjs/common';
- import { Observable } from 'rxjs';
- import Axios from 'axios';
- @Injectable()
- export class TimeoutInterceptor implements NestInterceptor {
- intercept(context: any, next: CallHandler): Observable<any> {
- const CancelToken = Axios.CancelToken;
- const source = CancelToken.source();
- const url: string = context.url ? context.url : context.args[0].url;
- Axios.defaults.timeout = 200;
- Axios.get(url, {
- cancelToken: source.token
- }).then((res) => {
- }, error => {
- if (error.message.indexOf('timeout') >= 0) {
- throw new Axios.Cancel('Operation canceled due to timeout!');
- }
- }
- ).catch((error) => {
- if (Axios.isCancel(error)) {
- console.log('Request canceled ', error);
- } else {
- console.log('--else part--');
- }
- });
- return next.handle();
- }
- }
- // timeout.interceptor.spec.ts
- import { Test, TestingModule } from '@nestjs/testing';
- import {
- HttpModule, Controller,
- ExecutionContext,
- Get,
- InternalServerErrorException
- } from '@nestjs/common';
- import { of, Observable, throwError } from 'rxjs';
- //import { Reflector } from '@nestjs/core';
- import Axios from 'axios';
- describe('Content Service', () => {
- let module: TestingModule;
- //let reflector;
- let timeoutInterceptor;
- //const loggerSpy = jest.fn()
- let getSpy;
- let cancelSpy;
- const errCode = 'MockController#decorated';
- const errMessage = 'Controller threw an error';
- beforeEach(async () => {
- module = await Test.createTestingModule({
- imports: [HttpModule],
- }).compile();
- getSpy = jest.spyOn(Axios, 'get');
- timeoutInterceptor = new timeoutInterceptor();
- })
- it('should call Axios.Cancel when it catches an timeout>0', done => {
- const context={url:''}
- timeoutInterceptor.intercept(context, throwError(new InternalServerErrorException()))
- .subscribe(
- () => { },
- () => {
- expect(Axios.Cancel).toHaveBeenCalled();
- done();
- }
- )
- .unsubscribe();
- });
- })
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement