# -*- 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")