인증서를 사용해서 전자서명, 암/복호화를 하는 통신 모듈을 테스트하기

- 서버 to 서버 통신을 하는 모듈
- SendSOAPServlet -> SendSOAPServiceImpl -> SOAPMessage 를 사용하는 구조임.

- SendSOAPServiceImpl#proc(...) 를 수정하고자 함.
이 메서드는
  1. 데이터를 가져와서
  2. XML 문서를 생성하고
  3. SOAPEnvelope 와 SOAPMessage 를 생성하고
  4. 생성된 XML 문서를 MIME 에 추가한다.
  5. 첨부파일을 암호화해서 추가
  6. 전자서명 생성, 검증
  7. MimeBodyPart 생성
  8. XML, SOAP 파일로 저장
  9. 전송
  10. 응답 수신
을 처리한다.

1) 서버에 접속하지 못하므로 전송시 에러가 무조건 발생함.
이 예외를 처리하고 SOAP 메세지에서 MessageDigest, SignatureValue 를 비교해 보면 됨.

2) 굳이 통신까지 가지 않아도 전송 전 SOAP 메세지가 제대로 만들어졌는지만 확인하면 됨.
(proc 메서드가 나누어졌으면 테스트 하기 쉬웠을텐데 덩치가 너무 크다.)
SOAPMessage 클래스를 테스트하면 된다.

- 관련 파일이 많아서 해당 패키지 아래에 res/ 를 만들었다.
(여기에 각 인증서 디렉토리, 로그 디렉토리 등을 둔다.)

- XML 문서는 미리 만들어진 파일을 이용함.(데이터베이스 연결이 필요없음)

- 설정파일에서 읽어오는 부분을 직접 하드코딩함.
(이 부분이 변경되는 것도 아니고, 별도의 테스트용 설정 파일을 만들 필요가 없었다. - 이 부분은 상황마다 다르겠지.)

- 테스트를 위한 인증관련 설정파일을 별도로 만들어서 res/ 에 두었다.
이렇게 테스트하니 인증관련 설정파일에 대한 설정을 이것저것 바꿔가면서 계속 실행해 볼 수 있어 각 설정값의 역할에 대해서 깊게 이해할 수 있었다.

- 인증서 암호파일은 각 머신에서 생성되어야 하므로 테스트 전 직접 생성해야 한다.

- 기존에 문제없이 돌아가던 모듈이므로 먼저 이에 대한 테스트 코드를 작성한다.
그리고 원하는 기능에 대한 테스트  코드를 추가한다.