Forum Discussion
Hi Obaid,
I ended up automating these programmatically using javascript without any explicit support from TestComplete, though my tests still run from TC.
Here's some sample code:
function v2_getVirtualCardNumber (token , memberID, progUDK)
{
var message = baseURL + "v2/" + progUDK + "/members/" + memberID + "/cards" ;
return http_request_member( token, message, "GET", "" );
}
function http_request_member (memberAccessToken, URL, method, formData, optionalAPIaccessToken) {
Log.Message( "token " + memberAccessToken );
Log.Message(" message in additional info", URL);
Log.Message(" formData in additional info", formData);
var XmlHttpRequest;
XmlHttpRequest = null;
XmlHttpRequest = new ActiveXObject("MSXML2.XMLHTTP.3.0");
if ( ( method == undefined) || (method == "") ) {
method = "GET";
}
var curl;
if ( method == "GET") {
curl = "curl --insecure -H \"Content-type: application/json\" -H \"memberAccessToken:"+memberAccessToken+"\" -X " + method + " " + formData + " " + URL;
}
else {
curl = "curl --insecure -H \"Content-type: application/json\" -H \"memberAccessToken:"+memberAccessToken+"\" -X " + method + " -d " + formData + " " + URL;
}
Log.Message(" curl in additional info=", curl+"=");
// XmlHttpRequest.open( Method, URL, Asynchronous, UserName, Password)
// method e.g. GET, POST, HEAD, PUT, DELETE, OPTIONS...
// Asynchronous = true, do not wait on a server response, false, pause current execution utnil the request is complete
XmlHttpRequest.open(method, URL, false);
// Name, Value
XmlHttpRequest.setRequestHeader("Content-Type", "application/json");
XmlHttpRequest.setRequestHeader("memberAccessToken", memberAccessToken);
if ( (optionalAPIaccessToken != undefined) && ( optionalAPIaccessToken != EMPTY) ) {
Log.Message("header access_token " + optionalAPIaccessToken + " added to request");
XmlHttpRequest.setRequestHeader("access_token", optionalAPIaccessToken);
}
XmlHttpRequest.send(formData);
try {
Log.Message("http_request: reply in additional info", XmlHttpRequest.responseText);
return XmlHttpRequest.responseText;
}
catch (e) {
return "Error" + e ;
}
}
Hey Chicks,
I am extremely thankful for this. Let me investigate on this. Will update my findings after implementing your work.
Regards,
Obaid Shirwani
- AlexKaras9 years agoChampion Level 3
Hi Obaid,
SoapUI (http://smartbear.com/product/ready-api/soapui-ng/overview/ or http://www.soapui.org/ depending on your needs) fits better for REST API testing. SoapUI is integrated with TestComplete which means that you can run SoapUI tests from within TestComplete and get consolidated log.
Or, as Chicks already mentioned, you can use coded approach and keep everything within TestComplete.
- Colin_McCrae9 years agoCommunity Hero
Just to back up, you can use - ActiveXObject("MSXML2.XMLHTTP.3.0") - with RESTful API's.
I have a full set of script extensions now built to allow my tests to write their results to TFS using it's new RESTful API.
- obaid_shirwani9 years agoContributor
I have been able to achieve this using pHp and C# but still no luck with TestComplete / JS.
This is how my PHP code looks like:
<?php
$_url = "http://x.y.z.a/xyzqa/index.php/api/BringUsers";
$ch = curl_init($_url);
curl_setopt_array($ch, array(CURLOPT_HTTPHEADER => array('X-REST-USERNAME: admin', 'X-REST-PASSWORD: admin')));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//echo "Calling 'curl_exec':";
$_response = curl_exec($ch);
echo "<br>Closing CURL<br>";
curl_close($ch);
echo "<br><b>Decoding JSON:</b><br>";
$_jsonDecoded = json_decode($_response, true);
print_r($_jsonDecoded);
echo "</br>";This is how my C# code looks like:
//01. Begin: myApp REST API Method 01
static void myAppRESTAPIMethod01()
{
string responseString = "";
string url = @"http://x.y.z.a/xyzqa/index.php/api/BringUsers";
using (WebClient client = new WebClient())
{
client.Headers.Add("X_REST_USERNAME", "admin");
client.Headers.Add("X_REST_PASSWORD", "admin");
//send web request; get web response as XML
try
{
responseString = client.DownloadString(url).ToString();
Console.WriteLine(responseString);
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message);
}
}
}
//01. End: myAppREST API Method 01I am unable to figure out how to fit this in TestComplete/JS
Related Content
- 2 years ago
Recent Discussions
- 16 hours ago