# -*- coding: utf8 -*- """ ZDN (Information on employees) declaration """ from net.grinder.script import Test from net.grinder.script.Grinder import grinder from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest from HTTPClient import NVPair connectionDefaults = HTTPPluginControl.getConnectionDefaults() httpUtilities = HTTPPluginControl.getHTTPUtilities() import common from net.grinder.common import GrinderException import re,random class ZDNException(common.EDSTestException): """ ZDN summs exception """ class ZDNDeclaration(common.EDSTestCase): def requestNewDeclaration(self): # Expecting 302 'Object moved' headers1= \ ( NVPair( 'Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' ), NVPair( 'Referer', 'https://www2.vid.gov.lv/eds/logon/main.asp' ), ) request501 = HTTPRequest( url=common.url, headers=headers1 ) request501 = Test( 50011, 'ZZDN - GET new.asp ' ).wrap( request501 ) result = request501.GET( '/eds/logon/new.asp' ) self.token_sel_pers = httpUtilities.valueFromHiddenInput( 'sel_pers' ) self.token_sel_pers_nos = httpUtilities.valueFromHiddenInput( 'sel_pers_nos' ) #grinder.logger.output("\n\n>>>SP: %s, SPN: %s" % (self.token_sel_pers,self.token_sel_pers_nos)) headers2= \ ( NVPair( 'Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' ), NVPair( 'Referer', 'https://www2.vid.gov.lv/eds/logon/new.asp' ), ) request301 = HTTPRequest(url=common.url, headers=headers2) request301 = Test(50012, 'POST edit.asp').wrap(request301) result = request301.POST('/eds/logon/edit.asp', ( NVPair('nmr', self.token_sel_pers), NVPair('nis_dok', '990000063'), NVPair('iev_tips', '1'), ), ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), )) request302 = HTTPRequest(url=common.url, headers=headers2) request302 = Test(50013, 'GET /eds/logon/_zdn.asp').wrap(request302) result=request302.GET('/eds/logon/_zdn.asp') self.token_UniPage_ID = \ httpUtilities.valueFromHiddenInput('UniPage_ID') # '30.11.2007 12:16:44' self.token_CurrentPage = \ httpUtilities.valueFromHiddenInput('CurrentPage') # '1' self.token_dok_id = \ httpUtilities.valueFromHiddenInput('dok_id') # '-1' self.token_Status = \ httpUtilities.valueFromHiddenInput('Status') # '-1' soup=common.soupup( result.getText() ) self.izpilditajs=soup.first("input", {"name":"izpilditajs"}).getattr('value') self.nmr_kods=soup.first( "input", {"name":"nmr_kods"} ).getattr( "value" ) self.isais_nosauk=soup.first( "input", {"name":"isais_nosauk"} ).getattr( "value" ) self.datums_iesn=soup.first( "input", {"name":"datums_iesn"} ).getattr( "value" ) return result def _simulateAjaxNameSubstitution(self,pers_kods): """ Imitate ajax request to db to auto-fill person's name """ headers9= \ ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'), NVPair('Referer', 'https://www2.vid.gov.lv/eds/logon/_ddz_p.asp'), ) request701 = HTTPRequest(url=common.url, headers=headers9) request701 = Test(50021, 'GET _zdn_sql.asp.asp').wrap(request701) result = request701.GET( '/eds/logon/_zdn_sql.asp' + '?FieldIndex=1&FieldCount=1&lprc=0&rnd=%i&p_num=%s' % (random.randint(1,1000),pers_kods)) #print "\n>>>" + ":".join(dir(result)) if result.getStatusCode()!=200: raise ZDNException("40021 - Fetching ajax value has failed") def submitDeclaration(self,count=10): partners=self._generateTaxpayers(count) for i in partners: self._simulateAjaxNameSubstitution(i[0]) data=[] for i in range(1,count+1): person=partners[i-1] #salary=random.randint() #print "\n>>>" +str(person) for x in ( NVPair('pers_kods_%i' % i, person[0]), NVPair('datums_dzim_%i' % i, ''), NVPair('uzv_vards_%i' % i, person[1].encode('cp1257')), NVPair('datums_izm_%i' % i, '01.10.2007'), NVPair('izm_kods_%i' % i, '40'), ): data.append(x) for x in ( NVPair('isais_nosauk', self.isais_nosauk), NVPair('nmr_kods', self.nmr_kods), NVPair('izpilditajs', self.izpilditajs), NVPair('telef', '+371-67038017'), NVPair('vaditajs', 'Laimis Racenajs'), NVPair('GoToPage', '1'), NVPair('UniPage_ID', self.token_UniPage_ID), NVPair('CurrentPage', self.token_CurrentPage), NVPair('RecordsPerPage', '10'), NVPair('Status', self.token_Status), NVPair('datums_iesn', self.datums_iesn), NVPair('dok_id', self.token_dok_id), # NVPair('taks_no', '01.10.2007'), # NVPair('taks_lidz', '31.10.2007'), NVPair('Action', 'Submit'), ): data.append(x) headers9= \ ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'), NVPair('Referer', 'https://www2.vid.gov.lv/eds/logon/_zdn.asp'), ) request801 = HTTPRequest(url=common.url, headers=headers9) request801 = Test(50032, '50032 - Submit declaration POST /eds/logon/_zdn2.asp').wrap(request801) result = request801.POST( '/eds/logon/_zdn2.asp', data, ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ) ) if not (result.getStatusCode()==302 and result.getHeader('Location')=='main.asp'): txt=request801.GET('/eds/logon/'+result.getHeader('Location')).getText() maybeError=common.soupup(txt).first("frame",{'name':'show'}) if maybeError: txt=request801.GET("/eds/logon/"+maybeError.getattr('src')) #f=open('/tmp/out.html',"w") #f.write(txt) #f.close() def __call__(self): self.login(self.getNextLegalEntity(), 'demo') self.requestNewDeclaration() self.submitDeclaration() self.signDeclaration() self.logout() re1=re.compile("Deklar.cija : Zi.as par darba ..m.jiem")