개발 일기

백엔드만으로 Firebase 로그인 테스트 (view 없이) 본문

카테고리 없음

백엔드만으로 Firebase 로그인 테스트 (view 없이)

flow123 2022. 2. 22. 00:46

API 서버 프로젝트를 하면서, 먼저 로그인/회원가입을 구현하고 있다. 

FirebaseOAuth 에서는 Client가 토큰을 headers 에 넣어서 백엔드에 보내주는 로직이 있다. 

백엔드만 있는 상황에서는 이 로직을 구현할 수는 없지만, 토큰 외에 로직이 완성되었음을 테스트해야하기 때문에, 임시 방편으로 local 용 환경을 만들었다. 먼저 

 

(1) 회원 가입 컨트롤러 (users/local이라는 APi 를 만들어준다. 

(2) Local 용 security Config,

(3) LocalJwtfilter,

(4) application-local.yml 을 따로 만들었다. 

 

이렇게 하면 profile을 local로 설정해서 따로 테스트를 할 수 있다. 

 

컴파일 에러는 없었는데, 포스트맨 post test 를 하니 먼저 

No primary or single unique constructor found for class LocalMemberSignupRequestDto 라고 나온다. 기존에 
@AllArgs 만 롬복에 존재했는데, NoArgs 를 추가해주니까 해당 에러는 사라졌다. 

다음 에러 메시지

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause

org.postgresql.util.PSQLException: 오류: "email" 칼럼(해당 릴레이션 "member")의 null 값이 not null 제약조건을 위반했습니다.

보내는 파라미텉 자체를 인식하지 못한다 (email을 포함해서 보냈다) 살펴보니 Controller 코드에 @RequestBody가 빠졌다. 

    //로컬 서버 회원 가입
    @PostMapping("/local")
    public ResponseEntity<LocalMemberSignupRequestDto> localRegister(@RequestBody LocalMemberSignupRequestDto localDto) {
        Member registeredUser = userDetailsServiceImpl.register
                (localDto.getUid(), localDto.getEmail(), localDto.getUsername(), localDto.getProfileUrl());
        return new ResponseEntity<>(new LocalMemberSignupRequestDto(registeredUser), HttpStatus.CREATED);
//        return ResponseEntity.status(HttpStatus.CREATED).body(new LocalMemberSignupRequestDto(registeredUser));
    }

마지막으로 Required request body is missing이라는 에러다. 

완전히 같은 상황은 아니지만, 이것도 Requestbody를 컨트롤러가 완전히 인식하지는 못한 에러 같았다. 원인을 body형식을 text 로 보냈기 때문이라고 파악하신 걸 보고, 참고해서 나도 json 형태로 다시 보냈다 (body의 raw 를 클릭하면 -postman, json도 선택할 수 있다) 

https://scshim.tistory.com/320

유저가 저장되었다! 

 

로그인도 성공!

Comments