
    i                        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*   통합 테스트 - 시스템 전체 검증    N)Path)CodeReviewer)RedTeamOrchestratorc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	TestIntegrationu   통합 테스트 클래스c                 Z    t               | _        t        d| j                  i      | _        y)u   테스트 설정codeN)r   reviewerr   orchestrator)selfs    =/home/jay/workspace/memory/red_team/tests/test_integration.pysetUpzTestIntegration.setUp   s!    $/0GH    c                    t        j                  ddd      5 }|j                  d       |j                  }ddd       	 | j                  j                  d      }| j                  d|       | j                  d	|       | j                  |d   d
dg       | j                  |d	          t        j                  |       y# 1 sw Y   xY w# t        j                         w xY w)u$   시나리오 1: 정상 파일 검토w.pyFmodesuffixdeletez# Normal code
pass
Nr	   
risk_levelpassedlowmedium)
tempfileNamedTemporaryFilewritenamer   reviewassertIn
assertTrueosunlinkr   f	temp_pathresults       r   test_normal_file_reviewz'TestIntegration.test_normal_file_review   s     ((c%N 	RSGG+,I			!&&--fi@F MM,/MM(F+MM&.0ABOOF8,-IIi 	 	 IIi s   C A+C C
C$c                    t        j                  ddd      5 }|j                  d       |j                  }ddd       	 | j                  j                  d      }| j                  |d   d	       | j                  |d
   d       | j                  |d          t        j                  |       y# 1 sw Y   zxY w# t        j                         w xY w)u'   시나리오 2: 취약점 파일 검토r   r   Fr   zpassword = '123456'
Nr	   r   highvulnerability_countr   r   )r   r   r   r   r   r   assertEqualassertGreaterassertFalser"   r#   r$   s       r   test_vulnerable_file_reviewz+TestIntegration.test_vulnerable_file_review*   s     ((c%N 	RSGG+,I		!&&--fi@F VL16:v&;<a@VH-.IIi 	 	 IIi    B0 AB< 0B9<Cc                    t        j                  ddd      5 }|j                  d       |j                  }ddd       	 | j                  j                  d      }| j                  |d   d	d
g       | j                  |d   d       |d   D cg c]  }|d   	 }}| j                  d|       t        j                  |       y# 1 sw Y   xY wc c}w # t        j                         w xY w)u$   시나리오 3: SQL Injection 감지r   r   Fr   z7query = "SELECT * FROM users WHERE id = " + user_input
Nr	   r   r*   criticalr+   r   vulnerabilitiestypezSQL Injection)
r   r   r   r   r   r   r    r-   r"   r#   )r   r%   r&   r'   v
vuln_typess         r   test_sql_injection_detectionz,TestIntegration.test_sql_injection_detection;   s    ((c%N 	RSGGNOI			!&&--fi@F MM&.0DEv&;<a@-34E-FG!F)GJGMM/:6IIi 	 	 H IIi s*   C AC CC CC C-c                    t        j                  ddd      5 }|j                  d       |j                  }ddd       	 | j                  j                  d      }| j                  |d   d	       | j                  |d
   d       | j                  |d          t        j                  |       y# 1 sw Y   zxY w# t        j                         w xY w)u'   시나리오 4: 다중 취약점 감지r   r   Fr   zpassword = "hardcoded_pass"
api_key = "sk-1234567890"
query = "SELECT * FROM users WHERE id = " + user_id
eval(user_input)
os.system("ls " + filename)
Nr	   r   r2   r+      r   )r   r   r   r   r   r   r,   assertGreaterEqualr.   r"   r#   r$   s       r   test_multiple_vulnerabilitiesz-TestIntegration.test_multiple_vulnerabilitiesL   s    ((c%N 	RSGG   I		!&&--fi@F VL1:>##F+@$A1EVH-.IIi #	 	" IIi r0   c                    t        j                  ddd      5 }t        d      D ]  }|j                  d| d        |j                  }ddd       	 | j
                  j                  d	      }| j                  |d
   d       | j                  t        |d         d       | j                  |d          t        j                  |       y# 1 sw Y   xY w# t        j                         w xY w)u7   시나리오 5: 대용량 파일 아키텍처 리스크r   r   Fr      z# Line 
Nr	   r   r   architecture_issuesr   r   )r   r   ranger   r   r   r   r,   r-   lenr!   r"   r#   )r   r%   ir&   r'   s        r   !test_large_file_architecture_riskz1TestIntegration.test_large_file_architecture_riska   s     ((c%N 	RS3Z )'!B()I	
	!&&--fi@F VL18<s6*?#@A1EOOF8,-IIi 	 	 IIi s   2CA#C CC0N)
__name__
__module____qualname____doc__r   r(   r/   r7   r;   rC    r   r   r   r      s$    $I
!$!"!"!*!r   r   __main__)rG   r"   sysr   unittestpathlibr   pathinsertstr__file__parentcode_reviewerr   red_team_orchestratorr   TestCaser   rD   mainrH   r   r   <module>rV      ss    0 	 
    3tH~,,334 5 & 5a!h'' a!H zHMMO r   