
    gi-                         d dl Z d dlZd dl d dlmZ  G d dej                        Zej                  d      Z	e	j                   e               G d de      Zy)	    N)*)JiraApic                       e Zd Zd Zy)SensitiveDataFilterc                     t        |d      rd}|j                  j                  dd      }t        j                  d||      }t        j                  d||      }t        j                  d||      }t        j                  d||      }||_        y	y )
Nmsgz\1***\2z\""z("username":\s*")[^"]*(")z("password":\s*")[^"]*(")z ("webSudoPassword":\s*")[^"]*(")z("atl_token":\s*")[^"]*(")T)hasattrr   replaceresub)selfrecordrepl	clean_msgs       &./modules/jira/clients/zephyr_scale.pyfilterzSensitiveDataFilter.filter	   s    65!D

**5#6I;T9MI;T9MIBD)TI<dINI"FJ "    N)__name__
__module____qualname__r    r   r   r   r      s    
r   r   zatlassian.rest_clientc                       e Zd Zg dZeg dz   Zeg dz   Zeg z   Zg dZg dZ fdZ	d Z
d Zd# fd		Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd$dZd$dZd$dZd%dZd%dZd&dZ d&dZ!d&dZ"d  Z#d! Z$d" Z% xZ&S )'ZephyrScale)archivedattachments	createdBy	createdOnestimatedTimezfolder(id,name,projectId)idkey	keyNumberlabelsname	objectiveowner	projectIdstatusztraceLinks(id,issueId,url,urlDescription,confluencePageId,confluenceAppId,title,testPlan(id,key),testRun(id,key),testCase(id,key),type(id,index,name,i18nKey,systemKey))	updatedBy	updatedOn)	averageTimecomponentIdlatestVersionmajorVersion
parameterspreconditionprioritytestDatazftestScript(steps(id,index,description,attachments,expectedResult,testData,testCase(id,key,projectId))))descriptionenvironmentIdsexecutionTimeplannedEndDateplannedStartDateprojectVersionIduserKeys)r    indexlastTestResult)r   r   
traceLinksexecutionDater5   
assignedTor7   r6   testScriptResultsuserKeyr;   	automatedenvironmenttestResultStatusjiraVersionIdactualStartDateactualEndDatecommentr    r'   r!   c                 H    t        |   |g|i | d| _        d| _        y )Nz
rest/testsz1.0)super__init__zephyr_api_rootzephyr_api_version)r   urlargskwargs	__class__s       r   rJ   zZephyrScale.__init__a   s*    .t.v.+"'r   c                 f    t        j                         }t        |      dkD  r|d   j                  S y)u]    Получает имя метода, который вызвал текущий метод    unknown)inspectstacklenfunction)r   rU   s     r   _get_caller_method_namez#ZephyrScale._get_caller_method_nameg   s+    u:>8$$$r   c                 2    || j                   j                  v S )u^    Проверяет, определен ли метод именно в этом классе )rP   __dict__)r   method_names     r   _is_method_defined_herez#ZephyrScale._is_method_defined_heren   s    dnn5555r   c                     | j                         }| j                  |      r| j                  }| j                  }t        |   |||      }|S )N)api_rootapi_version)rX   r\   rK   rL   rI   resource_url)r   resourcer^   r_   caller_methodr`   rP   s         r   r`   zZephyrScale.resource_urlr   sZ    446''6++H11Kw+# , 

 r   c                 F    | j                  d      }| j                  |      S )Nprojectr`   get)r   rM   s     r   get_projectszZephyrScale.get_projects   s     	*xx}r   c                 T    | j                  d      }| d| }| j                  |      S )Nrd   /re   r   
project_idbase_urlrM   s       r   get_projectzZephyrScale.get_project   s0    $$Y/
!J<(xx}r   c                 V    | j                  d      }| d| d}| j                  |      S )Nrd   ri   z/permissionsre   rj   s       r   get_permissionszZephyrScale.get_permissions   s2    $$Y/
!J<|4xx}r   c                 V    | j                  d      }| d| d}| j                  |      S )Nrd   ri   z/userpermissionsre   rj   s       r   get_user_permissionsz ZephyrScale.get_user_permissions   s3    $$Y/
!J<'78xx}r   c                 V    | j                  d      }| d| d}| j                  |      S )Nrd   ri   z/rolesre   rj   s       r   	get_roleszZephyrScale.get_roles   s2    $$Y/
!J<v.xx}r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   labelparamsre   r   rk   rw   rM   s       r   
get_labelszZephyrScale.get_labels   s5     
 (xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   rB   rv   re   rx   s       r   get_environmentszZephyrScale.get_environments   s5     
 .xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   	iterationrv   re   rx   s       r   get_iterationszZephyrScale.get_iterations   s5     
 ,xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   datasetrv   re   rx   s       r   get_datasetszZephyrScale.get_datasets   s5     
 	*xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   testcasestatusrv   re   rx   s       r   get_testcase_statusesz!ZephyrScale.get_testcase_statuses   6     
  01xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   testplanstatusrv   re   rx   s       r   get_testplan_statusesz!ZephyrScale.get_testplan_statuses   r   r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   testrunstatusrv   re   rx   s       r   get_testrun_statusesz ZephyrScale.get_testrun_statuses   s5     
 0xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   testresultstatusrv   re   rx   s       r   get_testresult_statusesz#ZephyrScale.get_testresult_statuses   6     
  23xxFx++r   c                 R    d|i}| j                  d      }| j                  ||      S )Nr'   testcasepriorityrv   re   rx   s       r   get_testcase_prioritiesz#ZephyrScale.get_testcase_priorities   r   r   c                 L   d| dt        |      j                         d}|t        |      |d<   |t        |      |d<   |xs | j                  }t	        |t
        t        t        f      rdj                  |      }||d<   | j                  d      }| j                  ||	      S )
NztestCase.projectId IN (z!) ORDER BY testCase.keyNumber ASCqueryr   startAt
maxResults,fieldsztestcase/searchrv   )strlowerinttestcase_fields
isinstancelisttuplesetjoinr`   rf   r   rk   r   offsetlimitr   rw   rM   s           r   get_testcaseszZephyrScale.get_testcases   s     /zl:[\H++-
  #FF9#&u:F< /4//ftUC01XXf%F!x 12xxFx++r   c                 L   d| dt        |      j                         d}|t        |      |d<   |t        |      |d<   |xs | j                  }t	        |t
        t        t        f      rdj                  |      }||d<   | j                  d      }| j                  ||	      S )
NztestPlan.projectId IN (z) ORDER BY testPlan.id ASCr   r   r   r   r   ztestplan/searchrv   )r   r   r   testplan_fieldsr   r   r   r   r   r`   rf   r   s           r   get_testplanszZephyrScale.get_testplans   s     /zl:TUH++-
  #FF9#&u:F< /4//ftUC01XXf%F!x 12xxFx++r   c                 L   d| dt        |      j                         d}|t        |      |d<   |t        |      |d<   |xs | j                  }t	        |t
        t        t        f      rdj                  |      }||d<   | j                  d      }| j                  ||	      S )
NztestRun.projectId IN (z) ORDER BY testRun.id ASCr   r   r   r   r   ztestrun/searchrv   )r   r   r   testrun_fieldsr   r   r   r   r   r`   rf   r   s           r   get_testrunszZephyrScale.get_testruns  s     .j\9RSH++-
  #FF9#&u:F< .4..ftUC01XXf%F!x 01xxFx++r   c                 
   i }|xs | j                   }t        |t        t        t        f      rdj                  |      }||d<   | j                  d      }| d| d}| j                  ||      }|j                  d      xs g S )Nr   r   testrunri   z/testrunitemsrv   testRunItems)testrunitems_fieldsr   r   r   r   r   r`   rf   )r   
testrun_idr   rw   rl   rM   responses          r   get_testrun_testrunitemsz$ZephyrScale.get_testrun_testrunitems   s    3433ftUC01XXf%F!x$$Y/
!J<}588C8/||N+1r1r   c                     d|i}|xs | j                   }t        |t        t        t        f      rdj                  |      }||d<   | j                  d      }| d| d}| j                  ||      S )NitemIdr   r   r   ri   z/testresultsrv   )testresults_fieldsr   r   r   r   r   r`   rf   )r   r   item_idr   rw   rl   rM   s          r   get_testrun_testresultsz#ZephyrScale.get_testrun_testresults.  s     g
 2422ftUC01XXf%F!x$$Y/
!J<|4xxFx++r   c                 V    | j                  |dd|      }|j                  d      xs dS Nr       )r   r   r   totalr   )r   rf   )r   rk   r   
test_casess       r   get_total_testcaseszZephyrScale.get_total_testcases<  0    ''
4qS['\
~~g&+!+r   c                 V    | j                  |dd|      }|j                  d      xs dS r   )r   rf   )r   rk   r   
test_planss       r   get_total_testplanszZephyrScale.get_total_testplans@  r   r   c                 V    | j                  |dd|      }|j                  d      xs dS r   )r   rf   )r   rk   r   	test_runss       r   get_total_testrunszZephyrScale.get_total_testrunsD  s0    %%jQQY%Z	}}W%**r   c                 V    | j                  |      }| d| d}| j                  |      S )Nri   z	/commentsre   )r   entity	entity_idrl   rM   s        r   get_comments_forzZephyrScale.get_comments_forH  s2    $$V,
!I;i0xx}r   c                 Z    | j                  d      }| d| d| }| j                  |      S )Nrd   ri   z/foldertree/re   )r   rk   r   rl   rM   s        r   get_foldertree_forzZephyrScale.get_foldertree_forM  s6    $$Y/
!J<|F8<xx}r   c                 b    ddi}| j                  d      }| d| d}| j                  ||      S )Nr   zid,majorVersion,latestVersiontestcaseri   z/allVersionsrv   re   )r   testcase_keyrw   rl   rM   s        r   get_testcase_versionsz!ZephyrScale.get_testcase_versionsR  sB    ;<$$Z0
!L>6xxFx++r   )NN)Nr   NF)N)F)'r   r   r   common_fieldsr   r   r   r   r   rJ   rX   r\   r`   rg   rm   ro   rq   rs   ry   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rP   s   @r   r   r      s    M( $ 
' 
O # & N $b(O
0(6,,,,,,,,,,&,&,&2,,,+

,r   r   )rT   r   cmf.includemodules.jira.apir   loggingFilterr   	getLoggerlogger	addFilterr   r   r   r   <module>r      sT     	  $'..  
		2	3   $& '|,' |,r   