Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

konrads

By: a guest on Nov 30th, 2007  |  syntax: None  |  size: 6.75 KB  |  views: 44  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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")