NodeJS
-
nestjs에서 passport + SAML 로그인시 오류 발생 처리NodeJS 2021. 12. 12. 01:06
SAML assertion expired [Nest] 32582 - 2021-06-25 15:24:29 [ExceptionsHandler] SAML assertion expired +40568ms Error: SAML assertion expired at SAML.checkTimestampsValidityError (/Users/lahuman/dev/oss-square/backend/node_modules/passport-saml/lib/passport-saml/saml.js:1047:24) at /Users/lahuman/dev/oss-square/backend/node_modules/passport-saml/lib/passport-saml/saml.js:988:37 at processTicksAndR..
-
nestjs에서 jest를 이용한 End2End 테스트 케이스를 작성NodeJS 2021. 7. 23. 00:09
nestjs에서 jest를 이용한 End2End 테스트 케이스를 작성하였습니다. src/user/user.controller.spec.ts 파일에 사용자 추가/수정/삭제/조회에 대한 테스트 케이스를 작성하였습니다. End2End 데이터 기준의 validate 테스트 로그인 Mock 객체 주입 테스트 repository Mock 객체 테스트 전체 테스트 케이스 실행은 다음의 명령어로 할 수 있습니다. node run test특정 테스트 케이스 실행은 다음 명령어로 할 수 있습니다. node node_modules/jest/bin/jest.js src/user/user.controller.spec.ts 테스트 케이스를 이용하면 코드의 오류를 빠르게 찾아낼 수 있습니다. 그 외에도 플로우차트 기반으로 테스트 ..
-
NestJS에서는 기본적으로 jest 기반의 테스트 케이스를 제공합니다.NodeJS 2021. 7. 15. 00:07
오늘 설명은 Controller 기반의 테스트에서 다음 내용입니다. Repository 객체를 Mock으로 주입 Connection 객체를 Mock으로 주입 mockAuthGuard 객체를 Mock으로 주입하여 로그인 처리 첨부파일 업로드 Mock 객체 생성 자동으로 만들어진 테스트 케이스는 아래와 같습니다 import { Test, TestingModule } from '@nestjs/testing'; import { Controller } from './my.controller'; describe('Controller', () => { let controller: Controller; beforeEach(async () => { const module: Te..
-
nodejs에서 middleware 처리 방법NodeJS 2021. 7. 13. 00:06
기존 function에서 오류가 날 경우 봇으로 메시지 발송 기능을 구현 하려고 합니다. express에서는 middleware를 활용했었는데, 순수한 javascript에서는 어떻게 해야할지 검색을 해보니 Is there a way to add try-catch to every function in Javascript? 를 확인 할 수 있었습니다. var tcWrapper = function(f) { return function() { try { f.apply(this, arguments); } catch(e) { customErrorHandler(e) } } }위 예제의 문제는 결과 값 return 처리가 안되었다. async (비동기) 처리에서 오류 발생시 catch가 안됩니다. 이를 해결하기 위해..
-
[개인프로젝트] Workplace ExportNodeJS 2021. 2. 20. 18:01
Workplace Export 워크플레이스의 관리자 패널에서는 특정 Group의 게시글을 export를 제공하지 않습니다. 이 프로젝트는 Workplace의 특정 Group의 게시글을 다운 받는 기능을 제공합니다. 한번에 다운받을 게시글의 수는 .env에서 변경이 가능합니다. 너무 큰 숫자의 경우 Workplace 서버에서 오류가 발생할 수 있습니다. (권장: 100, 최대 : 500, 테스트에서는 1000도 가능하였으나, 오류가 간간히 발생했습니다.) workplace 게시글 + 댓글을 xlsx 형식으로 다운로드 합니다. Screen 그룹 정보 조회 그룹 ID를 기준으로 그룹 정보가 표기 1번째 이후 게시글 다운로드 시 게시글 다운로드 다음 으로 UI 변경 모든 게시글 다운로드 시 알림 표기 잘못된 그..
-
[개인프로젝트]md5-liteNodeJS 2021. 2. 18. 17:55
md5-lite 프로젝트 바로가기 파일을 청크(Chunk) 사이즈 처리를 해서 성능 향상을 목적으로 만들어진 모듈입니다. 파일 크기가 200000byte(0.2MB) 이상일 경우 초기 100000byte (0.1MB)와 마지막 100000byte을 이용하여 md5 hash 처리 합니다. 그보다 크기가 작을 경우 전체 데이터의 전체를 md5 hash 처리 합니다. 사용법은 다음과 같습니다. Installation npm install md5-lite --save yarn add md5-lite bower install md5-lite --save Usage Javascript const {md5Lite} = require('md5-lite'); console.log(md5Lite('...
-
MSSQL POOL을 Express 환경에서 사용하기NodeJS 2021. 2. 14. 17:46
MSSQL POOL을 Express 환경에서 사용하기 node-mssql의 예제를 참고로 다음과 같이 사용하고 있었습니다. const sql = require('mssql') // async/await style: const pool1 = new sql.ConnectionPool(config); const pool1Connect = pool1.connect(); pool1.on('error', err => { // ... error handler }) async function messageHandler() { await pool1Connect; // ensures that the pool has been created try { const request = pool1.req..
-
NAVER CLOUD PLATFORM API를 Typescript 기반에서 사용하기NodeJS 2021. 2. 13. 16:33
NAVER CLOUD PLATFORM API를 Typescript 기반에서 사용하기 회사의 메일 발송은 NAVER CLOUD PLATFORM API를 이용하고 있습니다. NAVER CLOUD PLATFORM API를 참조하면 인증키를 생성해서 API를 호출 해야 합니다. 자바를 사용할 경우 쉽게 만들수 있는데, javascript 버젼의 경우 CryptoJS v3.1.2를 사용하는 가이드를 주고 있습니다. 문제는 nodejs기반에선는 CryptoJS v3.1.2보다는 crypto-js를 많이 사용합니다. 다음 코드는 crypto-js를 사용해서 NAVER CLOUD PLATFORM API를 연동한 예제 입니다. 메일 발송 예제 import { HttpException, HttpStatus, Injecta..