ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 사용자 추가 API 성공, 실패시
    웹프로그래밍/node.js 2019. 6. 3. 18:39

    POST/users

     

    성공

    • 201 상태코드를 반환한다
    • 생성된 유저 객체를 반환한다
    • 입력한 name을 반환한다

    실패

    • name파라미터 누락 시 400을 반환한다
    • name이 중복일 경우 409를 반환한다

    req.body를 사용하려면, bodyParser를 사용해야한다.

    bodyParser 설치 : npm i body-parser --save


    index.spec.js 코드 추가

    describe('POST /users', ()=> {
        describe('성공시', ()=> {
            let body;
            let name = 'daniel'
    
            before(done=>{
                request(app)
                    .post('/users')     // 데이터를 body로 보내줌
                    .send({name})
                    .expect(201)
                    .end((err, res) => {
                        body = res.body;
                        done();
                    });
            });    // 테스트 케이스가 동작하기 전에 미리 실행되는 함수
    
            it('생성된 유저 객체를 반환한다', ()=> {        //비동기에 대한 처리
                body.should.have.property('id');
            });
            it('입력한 name을 반환한다', ()=>{
                body.should.have.property('name', name)
            });
        });
        describe('실패시', ()=> {
            it('name 파라미터 누락 시 400을 반환한다', (done)=> {        //비동기에 대한 처리
                request(app)
                    .post('/users')
                    .send({})
                    .expect(400)
                    .end(done);
            });
            it('name이 중복일 경우 409를 반환한다', done=> {        //비동기에 대한 처리
                request(app)
                    .post('/users')
                    .send({name: 'daniel'})
                    .expect(409)
                    .end(done);
            });
        });
    });

     

    index.js 코드 추가

    app.post('/users', (req, res) =>{
        const name = req.body.name;
    
        if(!name) return res.status(400).end();
    
        //user에 같은 이름이 있으면 배열을 따로 빼서 길이를 잰다. 길이가 있으면 409
        const isConflic = users.filter(user => user.name === name).length;
        if(isConflic) return res.status(409).end();
    
    
        const id = Date.now();
        const user = {id, name};
        users.push(user);
        res.status(201).json(user);
    })

     

    실행 결과

     

     

    '웹프로그래밍 > node.js' 카테고리의 다른 글

    데이터베이스  (0) 2019.06.04
    사용자 수정 API 성공, 실패시  (0) 2019.06.03
    사용자 삭제 API 성공, 실패시  (0) 2019.06.03
    사용자 조회 API 성공, 실패시  (0) 2019.06.03
    첫 API 테스트 만들기  (0) 2019.06.03

    댓글

Designed by Tistory.