MartinSpamer
14 years agoFrequent Contributor
Request Extension
It should be possible to extends Requests to obtain reuse. At the moment it is extemenly difficult to gain signficant reuse and test project rapidly become less maintainable
So for example consider the following request into a fine-grained API :
AuthorisedRequest extends Request
UnAuthorisedRequest extends Request
--- or ---
VersionSixRequest extends Request
VersionSevenRequest extends Request
VersionEightRequest extends Request
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sys-id SYSTEM "request.dtd">
<sys-id version="6.0, 7.0 or 8.0">
<request>
<clientCredentials/>
<clientRequestName/>
</request>
</system-id>
Which depending on the credentials offered might response with success :
<!DOCTYPE system-id SYSTEM "response.dtd">
<system-id version="6.0">
<response>
<returnStatus code=001>
<message>success</message>
</returnStatus>
</response>
</system-id>
or response with failure :
<!DOCTYPE system-id SYSTEM "response.dtd">
<system-id version="6.0">
<response>
<returnStatus code=999>
<message>invalid credentials</message>
</returnStatus>
</response>
</system-id>
or
<!DOCTYPE system-id SYSTEM "response.dtd">
<system-id version="7.0" or "8.0">
<response>
<returnStatus>
<code>999</code>
<message>invalid credentials</message>
</returnStatus>
</response>
</system-id>
It would then be possible to attach different Assertions and Groovy Scripts on each type or version of response and benefit from reuse instead of having to clone and modify dozens of seperate requests.
So for example consider the following request into a fine-grained API :
AuthorisedRequest extends Request
UnAuthorisedRequest extends Request
--- or ---
VersionSixRequest extends Request
VersionSevenRequest extends Request
VersionEightRequest extends Request
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sys-id SYSTEM "request.dtd">
<sys-id version="6.0, 7.0 or 8.0">
<request>
<clientCredentials/>
<clientRequestName/>
</request>
</system-id>
Which depending on the credentials offered might response with success :
<!DOCTYPE system-id SYSTEM "response.dtd">
<system-id version="6.0">
<response>
<returnStatus code=001>
<message>success</message>
</returnStatus>
</response>
</system-id>
or response with failure :
<!DOCTYPE system-id SYSTEM "response.dtd">
<system-id version="6.0">
<response>
<returnStatus code=999>
<message>invalid credentials</message>
</returnStatus>
</response>
</system-id>
or
<!DOCTYPE system-id SYSTEM "response.dtd">
<system-id version="7.0" or "8.0">
<response>
<returnStatus>
<code>999</code>
<message>invalid credentials</message>
</returnStatus>
</response>
</system-id>
It would then be possible to attach different Assertions and Groovy Scripts on each type or version of response and benefit from reuse instead of having to clone and modify dozens of seperate requests.