Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

328
Visualizações
coverage issue in nestjs roles.guard file

I have below file in nestjs. test cases for this code is getting passed. but coverage issue is coming so pipeline getting failed.

import { Injectable, CanActivate, ExecutionContext, Logger } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { ROLES_KEY } from './roles.decorator';
import { Role } from './role.enum';

@Injectable()
export class RolesGuard implements CanActivate {
    constructor(private reflector: Reflector) {}

    canActivate(context: ExecutionContext): boolean {
        const requiredRoles = this.reflector.getAllAndOverride<string[]>(ROLES_KEY, [
            context.getHandler(),
            context.getClass(),
        ]);

        const { user } = context.switchToHttp().getRequest();

        if (!user.role) {
            Logger.error('User does not have a role set');
            return false;
        }

        if (user.role === Role.Admin) {
            return true;
        }

        if (!Array.isArray(requiredRoles) || !requiredRoles.length) {
            // No @Roles() decorator set, deny access as not admin
            return false;
        }

        if (requiredRoles.includes(Role.All)) {
            return true;
        }

        return requiredRoles.includes(user.role);
    }
}

I am writing below test case file for it.

import { createMock } from '@golevelup/ts-jest';
import { ExecutionContext } from "@nestjs/common";
import { Reflector } from "@nestjs/core";
import { RolesGuard } from "./roles.guard";

describe('RolesGuard', () => {
  let guard: RolesGuard;
  let reflector: Reflector;

  beforeEach(() => {
    reflector = new Reflector();
    guard = new RolesGuard(reflector);
  });

  it('should be defined', () => {
    expect(guard).toBeDefined();
  });

  it('should return false if user does not exist', () => {
    reflector.getAllAndOverride = jest.fn().mockReturnValue(true);
    const context = createMock<ExecutionContext>();
    const canActivate = guard.canActivate(context);
    expect(canActivate).toBe(false); 
  })
})

but coverage is not showing for below line

if (user.role === Role.Admin) {
        return true;
    }

    if (!Array.isArray(requiredRoles) || !requiredRoles.length) {
        // No @Roles() decorator set, deny access as not admin
        return false;
    }

    if (requiredRoles.includes(Role.All)) {
        return true;
    }

    return requiredRoles.includes(user.role);

could you please help me on the same? I am not able to understand how to handle coverage of these lines. I am invoking method but still it is showing.

I also asked similar question test case for roles guard file in nestjs

about 4 years ago · Santiago Gelvez
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda