
    iL                        d Z ddlZddlZddlZddlZddlmZ ej                  j                  d e	 ee
      j                  j                               ddlmZ ddlmZ  G d dej                         Zedk(  r ej&                          yy)	u)   red_team_orchestrator.py 단위 테스트    N)Path)CodeReviewer)RedTeamOrchestratorc                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
TestRedTeamOrchestratoru   Red Team Orchestrator 테스트c                 <    t               }t        d|i      | _        y)u   테스트 설정codeN)r   r   orchestrator)selfreviewers     G/home/jay/workspace/memory/red_team/tests/test_red_team_orchestrator.pysetUpzTestRedTeamOrchestrator.setUp   s    >/0BC    c                     | j                  | j                         | j                  d| j                  j                         y)u5   오케스트레이터가 초기화되었는지 확인r	   N)assertIsNotNoner
   assertIn	reviewers)r   s    r   test_orchestrator_initializedz5TestRedTeamOrchestrator.test_orchestrator_initialized   s0    T../fd//99:r   c                 \    | j                   j                         }| j                  d|       y)u   사용 가능한 타입 확인r	   N)r
   get_available_typesr   )r   typess     r   test_get_available_typesz0TestRedTeamOrchestrator.test_get_available_types   s$    !!557fe$r   c                 x   t        j                  ddd      5 }|j                  d       |j                  }ddd       	 | j                  j                  d      }| j                  d|       | j                  d	|       t        j                  |       y# 1 sw Y   `xY w# t        j                         w xY w)
u   코드 검토w.pyFmodesuffixdeletez# Normal code
pass
Nr	   
risk_levelpassed	tempfileNamedTemporaryFilewritenamer
   reviewr   osunlinkr   f	temp_pathresults       r   test_review_with_code_typez2TestRedTeamOrchestrator.test_review_with_code_type#   s    ((c%N 	RSGG+,I		!&&--fi@FMM,/MM(F+IIi 	 	 IIi s   B A B" B"B9c                     | j                   j                  dd      }| j                  d|       | j                  d|       y)u   잘못된 타입으로 검토invalid_typeztest.pyerroravailable_typesN)r
   r'   r   )r   r-   s     r   test_review_with_invalid_typez5TestRedTeamOrchestrator.test_review_with_invalid_type1   s7    "")).)Dgv&'0r   c                    t        j                  ddd      5 }|j                  d       |j                  }ddd       	 | j                  j                  d      }| j                  d|       | j                  d	|       | j                  |d   g d
       t        j                  |       y# 1 sw Y   wxY w# t        j                         w xY w)u%   리뷰 결과 구조 일관성 확인r   r   Fr   zx = 1
Nr	   r    r!   )lowmediumhighcriticalunknownr"   r*   s       r   (test_review_returns_consistent_structurez@TestRedTeamOrchestrator.test_review_returns_consistent_structure8   s    ((c%N 	RSGGII			!&&--fi@F MM,/MM(F+MM&.0`aIIi 	 	 IIi s   B- AB9 -B69Cc                     ddl m}  G d d|      } |       }t        t               |d      }|j	                         }| j                  d|       | j                  d|       y)	u   여러 리뷰어 등록r   )ReviewerInterfacec                       e Zd Zd Zy)ETestRedTeamOrchestrator.test_multiple_reviewers.<locals>.MockReviewerc                     dddS )Nr5   T)r    r!    )r   docs     r   r'   zLTestRedTeamOrchestrator.test_multiple_reviewers.<locals>.MockReviewer.reviewN   s    &+t<<r   N)__name__
__module____qualname__r'   r@   r   r   MockReviewerr>   M   s    =r   rE   )r	   mockr	   rF   N)base_reviewerr<   r   r   r   r   )r   r<   rE   rF   multi_orchestratorr   s         r   test_multiple_reviewersz/TestRedTeamOrchestrator.test_multiple_reviewersI   sX    3	=, 	= ~0,.RV1WX"668fe$fe$r   N)rB   rC   rD   __doc__r   r   r   r.   r3   r:   rI   r@   r   r   r   r      s)    )D
;
%!1!"%r   r   __main__)rJ   r(   sysr#   unittestpathlibr   pathinsertstr__file__parentcode_reviewerr   red_team_orchestratorr   TestCaser   rB   mainr@   r   r   <module>rX      ss    / 	 
    3tH~,,334 5 & 5F%h// F%R zHMMO r   