Advertisement
Guest User

konrads

a guest
Nov 30th, 2007
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.75 KB | None | 0 0
  1. # -*- coding: utf8 -*-
  2. """
  3. ZDN (Information on employees) declaration
  4. """
  5. from net.grinder.script import Test
  6. from net.grinder.script.Grinder import grinder
  7. from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
  8. from HTTPClient import NVPair
  9. connectionDefaults = HTTPPluginControl.getConnectionDefaults()
  10. httpUtilities = HTTPPluginControl.getHTTPUtilities()
  11. import common
  12. from net.grinder.common import GrinderException
  13. import re,random
  14.  
  15. class ZDNException(common.EDSTestException):
  16. """
  17. ZDN summs exception
  18. """
  19. class ZDNDeclaration(common.EDSTestCase):
  20.  
  21. def requestNewDeclaration(self):
  22.  
  23.  
  24. # Expecting 302 'Object moved'
  25.  
  26.  
  27. headers1= \
  28. ( NVPair( 'Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' ),
  29. NVPair( 'Referer', 'https://www2.vid.gov.lv/eds/logon/main.asp' ), )
  30. request501 = HTTPRequest( url=common.url, headers=headers1 )
  31. request501 = Test( 50011, 'ZZDN - GET new.asp ' ).wrap( request501 )
  32. result = request501.GET( '/eds/logon/new.asp' )
  33. self.token_sel_pers = httpUtilities.valueFromHiddenInput( 'sel_pers' )
  34. self.token_sel_pers_nos = httpUtilities.valueFromHiddenInput( 'sel_pers_nos' )
  35. #grinder.logger.output("\n\n>>>SP: %s, SPN: %s" % (self.token_sel_pers,self.token_sel_pers_nos))
  36.  
  37. headers2= \
  38. ( NVPair( 'Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' ),
  39. NVPair( 'Referer', 'https://www2.vid.gov.lv/eds/logon/new.asp' ), )
  40.  
  41. request301 = HTTPRequest(url=common.url, headers=headers2)
  42. request301 = Test(50012, 'POST edit.asp').wrap(request301)
  43. result = request301.POST('/eds/logon/edit.asp',
  44. ( NVPair('nmr', self.token_sel_pers),
  45. NVPair('nis_dok', '990000063'),
  46. NVPair('iev_tips', '1'), ),
  47. ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ))
  48.  
  49. request302 = HTTPRequest(url=common.url, headers=headers2)
  50. request302 = Test(50013, 'GET /eds/logon/_zdn.asp').wrap(request302)
  51.  
  52. result=request302.GET('/eds/logon/_zdn.asp')
  53.  
  54. self.token_UniPage_ID = \
  55. httpUtilities.valueFromHiddenInput('UniPage_ID') # '30.11.2007 12:16:44'
  56. self.token_CurrentPage = \
  57. httpUtilities.valueFromHiddenInput('CurrentPage') # '1'
  58. self.token_dok_id = \
  59. httpUtilities.valueFromHiddenInput('dok_id') # '-1'
  60. self.token_Status = \
  61. httpUtilities.valueFromHiddenInput('Status') # '-1'
  62. soup=common.soupup( result.getText() )
  63. self.izpilditajs=soup.first("input", {"name":"izpilditajs"}).getattr('value')
  64. self.nmr_kods=soup.first( "input", {"name":"nmr_kods"} ).getattr( "value" )
  65. self.isais_nosauk=soup.first( "input", {"name":"isais_nosauk"} ).getattr( "value" )
  66. self.datums_iesn=soup.first( "input", {"name":"datums_iesn"} ).getattr( "value" )
  67. return result
  68.  
  69.  
  70. def _simulateAjaxNameSubstitution(self,pers_kods):
  71. """
  72. Imitate ajax request to db to auto-fill person's name
  73. """
  74. headers9= \
  75. ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
  76. NVPair('Referer', 'https://www2.vid.gov.lv/eds/logon/_ddz_p.asp'), )
  77. request701 = HTTPRequest(url=common.url, headers=headers9)
  78. request701 = Test(50021, 'GET _zdn_sql.asp.asp').wrap(request701)
  79. result = request701.GET(
  80. '/eds/logon/_zdn_sql.asp' +
  81. '?FieldIndex=1&FieldCount=1&lprc=0&rnd=%i&p_num=%s' % (random.randint(1,1000),pers_kods))
  82. #print "\n>>>" + ":".join(dir(result))
  83. if result.getStatusCode()!=200:
  84. raise ZDNException("40021 - Fetching ajax value has failed")
  85.  
  86. def submitDeclaration(self,count=10):
  87. partners=self._generateTaxpayers(count)
  88. for i in partners:
  89. self._simulateAjaxNameSubstitution(i[0])
  90. data=[]
  91. for i in range(1,count+1):
  92. person=partners[i-1]
  93. #salary=random.randint()
  94. #print "\n>>>" +str(person)
  95. for x in (
  96. NVPair('pers_kods_%i' % i, person[0]),
  97. NVPair('datums_dzim_%i' % i, ''),
  98. NVPair('uzv_vards_%i' % i, person[1].encode('cp1257')),
  99. NVPair('datums_izm_%i' % i, '01.10.2007'),
  100. NVPair('izm_kods_%i' % i, '40'),
  101. ):
  102. data.append(x)
  103. for x in (
  104. NVPair('isais_nosauk', self.isais_nosauk),
  105. NVPair('nmr_kods', self.nmr_kods),
  106. NVPair('izpilditajs', self.izpilditajs),
  107. NVPair('telef', '+371-67038017'),
  108. NVPair('vaditajs', 'Laimis Racenajs'),
  109. NVPair('GoToPage', '1'),
  110. NVPair('UniPage_ID', self.token_UniPage_ID),
  111. NVPair('CurrentPage', self.token_CurrentPage),
  112. NVPair('RecordsPerPage', '10'),
  113. NVPair('Status', self.token_Status),
  114. NVPair('datums_iesn', self.datums_iesn),
  115. NVPair('dok_id', self.token_dok_id),
  116. # NVPair('taks_no', '01.10.2007'),
  117. # NVPair('taks_lidz', '31.10.2007'),
  118. NVPair('Action', 'Submit'),
  119.  
  120. ): data.append(x)
  121.  
  122. headers9= \
  123. ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
  124. NVPair('Referer', 'https://www2.vid.gov.lv/eds/logon/_zdn.asp'), )
  125. request801 = HTTPRequest(url=common.url, headers=headers9)
  126. request801 = Test(50032, '50032 - Submit declaration POST /eds/logon/_zdn2.asp').wrap(request801)
  127. result = request801.POST(
  128. '/eds/logon/_zdn2.asp',
  129. data,
  130. ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), )
  131. )
  132. if not (result.getStatusCode()==302 and result.getHeader('Location')=='main.asp'):
  133. txt=request801.GET('/eds/logon/'+result.getHeader('Location')).getText()
  134. maybeError=common.soupup(txt).first("frame",{'name':'show'})
  135. if maybeError:
  136. txt=request801.GET("/eds/logon/"+maybeError.getattr('src'))
  137. #f=open('/tmp/out.html',"w")
  138. #f.write(txt)
  139. #f.close()
  140.  
  141.  
  142.  
  143.  
  144. def __call__(self):
  145. self.login(self.getNextLegalEntity(), 'demo')
  146. self.requestNewDeclaration()
  147. self.submitDeclaration()
  148. self.signDeclaration()
  149. self.logout()
  150. re1=re.compile("Deklar.cija : Zi.as par darba ..m.jiem")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement