UNPKG

12.6 kBJavaScriptView Raw
1!function(){var e=require("rally"),t=require("request-promise");queryUtils=e.util.query,refUtils=e.util.ref,logger=require("./Logger.js"),rallylog=require("./RallyLog.js");var r;if(void 0!=process.env.apiKey){r=process.env.apiKey,rallylog.info("apikey is '"+r+"'");var s=process.env.rallyProxy;process.env.tag;if(void 0!=process.env.method)o=process.env.method;else var o="Automated";var a,n="https://rally1.rallydev.com/slm/webservice/v2.0/";void 0!=process.env.type?"Acceptance"!=(a=process.env.type)&&"Functional"!=a&&"Performance"!=a&&"Regression"!=a&&"Usability"!=a&&"User Interface"!=a&&(console.log('Typo in the .env file type= : setting Type to default value "Acceptance"'),rallylog.info("Typo in the .env file type= '"+a+'\' setting Type to default value "Acceptance"'),a="Acceptance"):a="Acceptance",restApi=e({apiKey:r,apiVersion:"v2.0",server:"https://rally1.rallydev.com",requestOptions:{headers:{"X-RallyIntegrationName":"Rally Result Logger for ProUI","X-RallyIntegrationVendor":"GE Digital","X-RallyIntegrationVersion":"1.0"},proxy:s}});module.exports=new function(){return{getObjectRef:function(e,t,r,s,o,a){if(""==t)console.log("No workspace/project/testplan provided - using default"),logger.info("No workspace/project/testplan provided - using default"),a("");else{var n=queryUtils.where("name","=",t);restApi.query({type:e,start:1,pageSize:200,limit:1/0,fetch:["FormattedID","Name","TestCases","ObjectID","LastResult","RevisionHistory","Steps","Parent","TestFolder","Project"],query:n,scope:{workspace:s,project:r,up:!1,down:!1}},function(t,r){if(t)throw console.log(t),t;var s=!1,n=0,i="",l=JSON.parse(JSON.stringify(r.Results));if(l.length>0&&"testcase"==e){var c=new Array,d=-1;(u=function(e,t){if(e<l.length)if(null==l[e].TestFolder)c.push(e),u(e+1);else{var p=l[e].TestFolder.ObjectID;void 0!==o&&null!=p&&p==o?(d=e,u(l.length)):null==p?(c.push(e),u(e+1)):e==l.length-1&&0==c.length?a("NOT_FOUND"):u(e+1)}else{-1==d&&(d=c.pop()),void 0!=l[d].LastResult?null==l[d].LastResult?s=!1:(s=!0,n=l[d].LastResult._ref,n=n.split("/"),n=n[7]):s=!1,void 0!=l[d].RevisionHistory&&(i=l[d].RevisionHistory._ref);var f=l[d]._ref,g=r.Results[d].ObjectID,_=refUtils.getRelative(f);a({ref:_,id:g,last_run:s,test_case_result_id:n,revision_history_ref:i})}})(0)}else if(l.length>0&&"testfolder"==e){var c=new Array,d=-1,u=function(e,t){if(e<l.length)if(null==l[e].Parent)c.push(e),u(e+1);else{var p=l[e].Parent.ObjectID;void 0!==o&&null!=p&&p==o?(d=e,u(l.length)):null==p?(c.push(e),u(e+1)):e==l.length-1&&0==c.length?a("NOT_FOUND"):u(e+1)}else{var f;-1==d?(d=c.pop(),f=l[d].Parent):f=l[d].Parent.ObjectID,void 0!=l[d].LastResult?null==l[d].LastResult?s=!1:(s=!0,n=l[d].LastResult._ref,n=n.split("/"),n=n[7]):s=!1,void 0!=l[d].RevisionHistory&&(i=l[d].RevisionHistory._ref);var g=l[d]._ref,_=r.Results[d].ObjectID,y=refUtils.getRelative(g);a({ref:y,id:_,last_run:s,parent:f,test_case_result_id:n,revision_history_ref:i})}};u(0)}else a("NOT_FOUND")})}},UserPermissions:function(e,t,r){var s="",o="";restApi.query({type:"userpermission",start:1,pageSize:200,limit:1/0,fetch:["Workspace","Name","Project","ObjectID","User"],scope:{}},function(a,n){if(a)console.error(a),r(a);else{var i=JSON.parse(JSON.stringify(n.Results));if(i.length>0){for(var l=i[0].User._ref,c=(refUtils.getRelative(l),i[0].User.ObjectID),d=0;d<i.length;d++)if("workspace"==e){if(i[d].Workspace.Name==t){o=i[d].Workspace._ref,o=refUtils.getRelative(o);break}}else if("project"==e&&void 0!=i[d].Project&&i[d].Project.Name==t.project&&i[d].Workspace.Name==t.workspace){s=i[d].Project._ref,s=refUtils.getRelative(s);break}r(d==i.length&&""!=t?"NOT_FOUND":{owner_id:c,wsRef:o,projRef:s})}else r("NOT_FOUND")}})},getUSTSRef:function(e,t,r,s,o){if(""==e)o({id:""});else{var a=queryUtils.where("FormattedID","=",e);restApi.query({type:s,start:1,pageSize:200,limit:1/0,fetch:["Name","ObjectID"],query:a,scope:{workspace:t,project:r}},function(e,t){if(e)throw console.log(e),e;var r=JSON.parse(JSON.stringify(t.Results));if(r.length>0){var s=r[0]._ref,a=refUtils.getRelative(s),n=r[0].ObjectID;o({ref:a,id:n})}else o({ref:a="",id:n=""})})}},createTestPlan:function(e,o,a,i,l){var c,d;c=void 0===i||0==i.length?'{\n "testfolder":\n {\n "Name":"'+e+'",\n "Workspace":"'+o+'",\n "Project":"'+a+'"\n }\n}':'{\n "testfolder":\n {\n "Name":"'+e+'",\n "Parent":"/testfolder/'+i+'",\n "Workspace":"'+o+'",\n "Project":"'+a+'"\n }\n}',t({method:"POST",url:n+"testfolder/create?fetch=true",headers:{zsessionid:r},body:c,proxy:s}).then(function(t,r){if(r)return console.log("Rally error: "+r),rallylog.info("Error in creating Test Plan: "+r),l();var s=JSON.parse(t);return s.CreateResult.Errors.length>0?(console.log("Error in creating Test Plan: Could not parse Feature Name. If you have a Rootfolder, make sure you are not missing the colon after rootfolder is stated. Ex. RF-test:feature name"),rallylog.info("Error in creating Test Plan: Rally error: Could not parse Feature Name. If you have a Rootfolder, make sure you are not missing the colon after rootfolder is stated. Ex. RF-test:feature name"),l()):(d=s.CreateResult.Object.ObjectID,rallylog.info("Created Test Plan ("+s.CreateResult.Object.FormattedID+"): "+e+"\n"),l({id:d}))})},updateTestPlan:function(e,o,a,i,l,c){t({method:"POST",url:n+"testfolder/"+l,headers:{zsessionid:r},proxy:s,body:void 0===i||""==i?'{\n "testfolder":\n {\n "Name":"'+e+'",\n "Workspace":"'+o+'",\n "Project":"'+a+'"\n }\n}':'{\n "testfolder":\n {\n "Name":"'+e+'",\n "Parent":"/testfolder/'+i+'",\n "Workspace":"'+o+'",\n "Project":"'+a+'"\n }\n}'}).then(function(t,r){if(r)throw console.log("Rally error: "+r),rallylog.info("Error in updating Test Plan("+s.CreateResult.Object.FormattedID+"): "+r),r;var s=JSON.parse(t);if(s.OperationResult.Errors.length>0)throw r="Rally error: "+JSON.stringify(s.OperationResult.Errors),rallylog.info("Error in updating Test Plan("+s.CreateResult.Object.FormattedID+"): "+r),r;return rallylog.info("Updated Test Plan ("+s.OperationResult.Object.FormattedID+"): "+e+"\n"),folder_id=s.OperationResult.Object.ObjectID,c({id:folder_id})})},getTagId:function(e,t,r,s){var o=queryUtils.where("name","=",r);restApi.query({type:"Tag",start:1,pageSize:200,limit:1/0,fetch:["FormattedID"],query:o,scope:{workspace:e,project:t,up:!0,down:!0}},function(e,t){return e?(console.log("Error in tags: "+e),rallylog.info("Error in retrieving Tag ID: "+e),s(e)):t.Results.length<=0?(console.log("Could not attach tag because there are no tags associated with '"+r+"'"),rallylog.info("Could not attach tag because there are no tags associated with '"+r+"'\n"),void s("There are no tags associated with "+r)):(tag_id=t.Results[0]._ref,tag_id=tag_id.match(/(\d)*$/g),tag_id+="",tag_id=tag_id.replace(/,/g,""),s({tagID:tag_id}))})},setTagId:function(e,t,r,s){restApi.add({ref:"/testcase/"+e.glb_test_case_id,collection:"Tags",data:[{_ref:"/tag/"+e.tagId}],scope:{workspace:t,project:r,up:!0,down:!0},fetch:[],requestOptions:{}},function(e,t){return e?(console.log(e),rallylog.info("Error in setting tag id: "+e+"\n"),s(e)):(rallylog.info("Set tag: "+t.Results[0].Name+"\n"),s())})},createTestcase:function(e,i,l,c){void 0==e.kObj.duration&&(e.kObj.duration=0),null==e.tcObj.glb_folder_id&&(e.tcObj.glb_folder_id=0);var d;""==e.tcObj.test_case_description?(e.tcObj.stepsArray=e.tcObj.stepsArray.toString().split('"').join(""),e.tcObj.test_case_description="<br>"+e.tcObj.stepsArray):(e.tcObj.stepsArray=e.tcObj.stepsArray.toString().split('"').join(""),e.tcObj.test_case_description=e.tcObj.test_case_description+"<br>"+e.tcObj.stepsArray),d='{\n "testcase":\n {\n "Name":"'+e.tcObj.test_case_name.replace(/\s+\s/i,"")+'",\n "Description":"'+e.tcObj.test_case_description+'",\n "Method":"'+o+'",\n "TestFolder":"'+e.tcObj.glb_folder_id+'",\n "WorkProduct":"'+e.tcObj.User_Story+'",\n "Owner":"'+e.tcObj.owner+'",\n "Notes":"'+e.error+'",\n "Type":"'+a+'",\n "Workspace":"'+i+'",\n "Project":"'+l+'"\n }\n}',t({method:"POST",url:n+"testcase/create",headers:{zsessionid:r},proxy:s,body:d}).then(function(t,r){return r?(console.log("Rally error: "+r),rallylog.info("Error in creating Test Case: "+r+"\n"),c({id:""})):(void 0!=(t=JSON.parse(t)).CreateResult.Object?e.tcObj.glb_test_case_id=t.CreateResult.Object.ObjectID:e.tcObj.glb_test_case_id=0,rallylog.info("Created Test Case ("+t.CreateResult.Object.FormattedID+"): "+e.tcObj.test_case_name+"\n"),c({id:e.tcObj.glb_test_case_id}))})},createTestcaseResult:function(e,o,a,i){void 0==e.resp.duration||"undefined"==e.resp.duration||null==e.resp.duration||NaN==e.resp.duration||"NaN"==e.resp.duration?e.resp.duration=0:e.resp.duration>9999999999&&(e.resp.duration=9999999999),"passed"==e.resp.status?e.resp.status="Pass":"failed"==e.resp.status?e.resp.status="Fail":"skipped"==e.resp.status&&(e.resp.status="Inconclusive",duration=0);var l={method:"POST",url:n+"testcaseresult/create",headers:{zsessionid:r},proxy:s,body:'{\n "testcaseresult":\n {\n "TestCase":"/testcase/'+e.tcObj.glb_test_case_id+'",\n "Build":"'+e.tcObj.build_num+'",\n "Duration":"'+e.resp.duration+'",\n "Verdict":"'+e.resp.status+'",\n "Date":"'+(new Date).toISOString()+'",\n "TestSet":"'+e.resp.id+'",\n "Workspace":"'+o+'"\n }\n}'},c=0;t(l).then(function(t,r){if(!r)return""!=(t=JSON.parse(t)).CreateResult.Errors?(c=null,i({id:""})):(rallylog.info("Created Test Case Result for "+t.CreateResult.Object.TestCase._refObjectName+": "+e.resp.status+"\n\n"),c=t.CreateResult.Object.ObjectID,i({id:c}));console.log("Rally error: "+r),rallylog.info("Error in creating test case result for "+e.tcObj.glb_test_case_id+"\n")})},updateTestCaseResult:function(e,o,a){void 0==o.duration&&(o.duration=0),void 0!=o.duration&&o.duration>9999999999&&(o.duration=9999999999),"passed"==o.status?o.status="Pass":"failed"==o.status?o.status="Fail":"skipped"==o.status&&(o.status="Inconclusive",o.duration=0);var i,l={method:"POST",url:n+"testcaseresult/"+e.glb_test_result_id,headers:{zsessionid:r},proxy:s,body:'{\n "testcaseresult":\n {\n "Build":"'+e.build_num+'",\n "Duration":"'+o.duration+'",\n "Date":"'+(new Date).toISOString()+'",\n "TestCase":"/testcase/'+e.glb_test_case_id+'",\n "Verdict":"'+o.status+'",\n "TestSet":"'+o.id+'"\n }\n}'};t(l).then(function(e,t){if(!t)return i={i:o.i,j:o.j},a(i);console.log("Rally error: "+t)})},updateTestCase:function(e,t,i,l){""==e.tcObj.test_case_description?(e.tcObj.stepsArray=e.tcObj.stepsArray.toString().split('"').join(""),e.tcObj.test_case_description="N/A<br>"+e.tcObj.stepsArray):(e.tcObj.stepsArray=e.tcObj.stepsArray.toString().split('"').join(""),e.tcObj.test_case_description=e.tcObj.test_case_description+"<br>"+e.tcObj.stepsArray),require("request-promise")({method:"POST",url:n+"testcase/"+e.tcObj.glb_test_case_id,headers:{zsessionid:r},proxy:s,body:'{\n "testcase":\n {\n "WorkProduct":"'+e.resp.id+'",\n "TestFolder":"'+e.tcObj.glb_folder_id+'",\n "Owner":"'+e.owner+'",\n "Method":"'+o+'",\n "Notes":"'+e.error+'",\n "Type":"'+a+'",\n "Description":"'+e.tcObj.test_case_description+'"\n }\n}'}).then(function(e,t){if(t)console.log("error: "+t),rallylog.info("Error in updating test case: "+t+"\n"),l();else{var r=(e=JSON.parse(e)).OperationResult.Errors;""==r&&(rallylog.info(JSON.stringify(r)),l()),rallylog.info("Updated Test Case ("+e.OperationResult.Object.FormattedID+"): "+e.OperationResult.Object._refObjectName+"\n"),l()}})},updateTestSet:function(e,o,a){var n;if(""==o.id)n={id:"",status:o.status,duration:o.duration,glb_test_case_id:o.glb_test_case_id,glb_folder_id:e.glb_rootfolder_id,json:o.json,i:o.i,j:o.j,k:k},a(n);else{n={id:o.id,status:o.status,duration:o.duration,glb_test_case_id:o.glb_test_case_id,glb_folder_id:e.glb_folder_id,json:o.json,i:o.i,j:o.j,k:k};var i={method:"POST",url:"https://rally1.rallydev.com/slm/webservice/v2.x/TestSet/"+o.id+"/TestCases/add?fetch=true",headers:{zsessionid:r},proxy:s,body:'{"CollectionItems":[{"_ref":"/testcase/'+e.glb_test_case_id+'"}]}'};t(i).then(function(e,t){e=JSON.parse(e),a(n)})}}}}}else rallylog.info("no apiKey defined")}();
\No newline at end of file