public void RemoveFromCollection2x() { RallyRestApi restApi = GetRallyRestApi2x(); DynamicJsonObject newStory = new DynamicJsonObject(); newStory["Name"] = "Test Story"; var itemRef = restApi.Create("hierarchicalrequirement", newStory).Reference; DynamicJsonObject newDefect = new DynamicJsonObject(); newDefect["Name"] = "New Defect Added via collection"; newDefect["Requirement"] = itemRef; CreateResult newTaskResult = restApi.Create("defect", newDefect); DynamicJsonObject story = restApi.GetByReference(itemRef, "Defects"); Assert.AreEqual(1, story["Defects"]["Count"]); DynamicJsonObject taskToRemove = new DynamicJsonObject(); taskToRemove["_ref"] = newTaskResult.Reference; OperationResult result = restApi.RemoveFromCollection(itemRef, "Defects", new List <DynamicJsonObject>() { taskToRemove }, new NameValueCollection()); Assert.IsTrue(result.Success); Assert.AreEqual(0, result.Results.Count); story = restApi.GetByReference(itemRef, "Defects"); Assert.AreEqual(0, story["Defects"]["Count"]); // Now delete the defect and story TestHelperDeleteItem(restApi, newTaskResult.Reference); TestHelperDeleteItem(restApi, itemRef); }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0"); String apiKey = "_abc123"; restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false); String workspaceRef = "/workspace/123"; String projectRef = "/project/456"; Request request = new Request("PortfolioItem/Feature"); request.Fetch = new List <string>() { "Name", "FormattedID" }; request.Query = new Query("FormattedID", Query.Operator.Equals, "F2356"); QueryResult result = restApi.Query(request); String featureRef = result.Results.First()._ref; Console.WriteLine("found" + featureRef); //create stories try { for (int i = 1; i <= 25; i++) { DynamicJsonObject story = new DynamicJsonObject(); story["Name"] = "story " + i; story["PlanEstimate"] = new Random().Next(2, 10); story["PortfolioItem"] = featureRef; story["Project"] = projectRef; CreateResult createResult = restApi.Create(workspaceRef, "HierarchicalRequirement", story); story = restApi.GetByReference(createResult.Reference, "FormattedID"); Console.WriteLine("creating..." + story["FormattedID"]); } //read stories DynamicJsonObject feature = restApi.GetByReference(featureRef, "UserStories"); Request storiesRequest = new Request(feature["UserStories"]); storiesRequest.Fetch = new List <string>() { "FormattedID", "PlanEstimate" }; storiesRequest.Limit = 1000; QueryResult storiesResult = restApi.Query(storiesRequest); int storyCount = 0; foreach (var userStory in storiesResult.Results) { Console.WriteLine(userStory["FormattedID"] + " " + userStory["PlanEstimate"]); storyCount++; } Console.WriteLine(storyCount); } catch (Exception e) { Console.WriteLine(e); } }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0"); String apiKey = "_abc777"; restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false); String workspaceRef = "/workspace/123"; String projectRef = "/project/134"; DynamicJsonObject badDefect = new DynamicJsonObject(); badDefect["Name"] = "bad defect 2" + DateTime.Now; badDefect["Project"] = projectRef; CreateResult createRequest = restApi.Create(workspaceRef, "Defect", badDefect); badDefect = restApi.GetByReference(createRequest.Reference, "FormattedID", "Project", "State"); Console.WriteLine(badDefect["FormattedID"] + " " + badDefect["Project"]._refObjectName + " " + badDefect["State"]); badDefect["State"] = "Open"; OperationResult updateRequest = restApi.Update(badDefect["_ref"], badDefect); Console.WriteLine("Success? " + updateRequest.Success); Console.WriteLine("updated State: " + badDefect["State"]); }
static void Main(string[] args) { RallyRestApi restApi; restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0"); String projectRef = "/project/123456"; //use valid OID of your project Request userRequest = new Request("User"); userRequest.Query = new Query("UserName", Query.Operator.Equals, "*****@*****.**"); QueryResult userResults = restApi.Query(userRequest); String userRef = userResults.Results.First()._ref; Console.WriteLine(userRef); DynamicJsonObject myStory = new DynamicJsonObject(); myStory["Name"] = "a new story"; myStory["Project"] = projectRef; myStory["Owner"] = userRef; CreateResult createResult = restApi.Create("HierarchicalRequirement", myStory); myStory = restApi.GetByReference(createResult.Reference, "FormattedID", "Owner", "Project"); Console.WriteLine(myStory["FormattedID"] + " " + myStory["Owner"]._refObjectName + " " + myStory["Project"]._refObjectName); }
public void GetByReferenceUserTest() { RallyRestApi restApi = GetRallyRestApi(); dynamic response = restApi.GetByReference("/user.js"); Assert.IsNotNull(response.ObjectID); }
public void GetByReferenceSubscriptionTest() { RallyRestApi restApi = GetRallyRestApi(); dynamic response = restApi.GetByReference("/subscription.js"); Assert.IsNotNull(response.ObjectID); }
private void TestHelperDeleteItem(RallyRestApi restApi, string reference) { OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(reference)); dynamic testEmpty = restApi.GetByReference(reference); Assert.IsNull(testEmpty); }
public void GetByReferenceTest() { RallyRestApi restApi = GetRallyRestApi(); dynamic response = restApi.GetByReference("/Defect/" + defectOid + ".js"); Assert.AreEqual(defectOid, response.ObjectID.ToString()); }
public List <string> GetListOfTestCasesFromFolder(string testcasesRef) { List <string> listTestCases = null; var testcasesObj = api.GetByReference(testcasesRef); var testcasesResult = (ArrayList)testcasesObj["Results"]; if (testcasesResult.Count > 0) { listTestCases = new List <string>(); foreach (dynamic value in testcasesResult) { listTestCases.Add(value["ObjectID"].ToString()); } } return(listTestCases); }
static void Main(string[] args) { RallyRestApi restApi; restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0"); String projectRef = "/project/222"; Request testSetRequest = new Request("TestSet"); testSetRequest.Project = projectRef; testSetRequest.Fetch = new List <string>() { "Name", "FormattedID", "TestCases" }; testSetRequest.Query = new Query("FormattedID", Query.Operator.Equals, "TS22"); QueryResult queryTestSetResults = restApi.Query(testSetRequest); String tsRef = queryTestSetResults.Results.First()._ref; String tsName = queryTestSetResults.Results.First().Name; Console.WriteLine(tsName + " " + tsRef); DynamicJsonObject testSet = restApi.GetByReference(tsRef, "FormattedID", "TestCases"); String testCasesCollectionRef = testSet["TestCases"]._ref; Console.WriteLine(testCasesCollectionRef); ArrayList testCasesList = new ArrayList(); foreach (var ts in queryTestSetResults.Results) { Request tcRequest = new Request(ts["TestCases"]); QueryResult queryTestCasesResult = restApi.Query(tcRequest); foreach (var tc in queryTestCasesResult.Results) { var tName = tc["Name"]; var tFormattedID = tc["FormattedID"]; Console.WriteLine("Test Case: " + tName + " " + tFormattedID); DynamicJsonObject aTC = new DynamicJsonObject(); aTC["_ref"] = tc["_ref"]; testCasesList.Add(aTC); //add each test case in the collection to array 'testCasesList' } } Console.WriteLine("count of elements in the array before adding a new tc:" + testCasesList.Count); DynamicJsonObject anotherTC = new DynamicJsonObject(); anotherTC["_ref"] = "/testcase/123456789"; //any existing test to add to the collection testCasesList.Add(anotherTC); Console.WriteLine("count of elements in the array:" + testCasesList.Count); testSet["TestCases"] = testCasesList; OperationResult updateResult = restApi.Update(tsRef, testSet); }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://sandbox.rallydev.com", "v2.0"); DynamicJsonObject user = restApi.GetCurrentUser(); String userRef = user["_ref"]; String workspaceRef = "/workspace/12352608129"; //use valid workspace OID in your Rally String projectRef = "/project/14018981229"; //use valid project OID in your Rally System.Diagnostics.TextWriterTraceListener myListener = new System.Diagnostics.TextWriterTraceListener("log.log", "myListener"); try { //create story DynamicJsonObject myStory = new DynamicJsonObject(); myStory["Name"] = "my story " + DateTime.Now; myStory["Project"] = projectRef; myStory["Owner"] = userRef; CreateResult createStory = restApi.Create(workspaceRef, "HierarchicalRequirement", myStory); myStory = restApi.GetByReference(createStory.Reference, "FormattedID", "Owner", "Project"); myListener.WriteLine(DateTime.Now + "___________\r\n" + myStory["FormattedID"] + " Owner: " + myStory["Owner"]._refObjectName + " Project: " + myStory["Project"]._refObjectName); //update story myStory["Description"] = "updated " + DateTime.Now; //create tasks for (int i = 1; i <= 3; i++) { DynamicJsonObject myTask = new DynamicJsonObject(); myTask["Name"] = "task " + i + DateTime.Now; myTask["Owner"] = userRef; myTask["State"] = "In-Progress"; myTask["WorkProduct"] = myStory["_ref"]; CreateResult createTask = restApi.Create(workspaceRef, "Task", myTask); myTask = restApi.GetByReference(createTask.Reference, "FormattedID", "Owner", "State"); myListener.WriteLine(myTask["FormattedID"] + " State: " + myTask["StateX"]); } } catch (Exception e) { myListener.WriteLine(e); } myListener.Flush(); }
public void GetByReferencePortfolioItemTest() { RallyRestApi restApi = GetRallyRestApi(); Request fRequest = new Request("PortfolioItem/Feature"); QueryResult queryResults = restApi.Query(fRequest); String featureRef = queryResults.Results.First()._ref; DynamicJsonObject feature = restApi.GetByReference(featureRef, "Name"); Assert.IsNotNull(feature); }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0"); String apiKey = "_abc123"; restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false); String projectRef = "/project/32904827032"; try { //create story DynamicJsonObject myStory = new DynamicJsonObject(); myStory["Name"] = "another story " + DateTime.Now; myStory["Project"] = projectRef; CreateResult createStory = restApi.Create(workspaceRef, "HierarchicalRequirement", myStory); myStory = restApi.GetByReference(createStory.Reference, "FormattedID", "Project"); //update story myStory["Description"] = "updated " + DateTime.Now; myStory["c_CustomString"] = "abc123"; Console.WriteLine("--------------------"); Console.WriteLine(myStory["FormattedID"]); OperationResult updateResult = restApi.Update(myStory["_ref"], myStory); //create tasks for (int i = 1; i <= 3; i++) { DynamicJsonObject myTask = new DynamicJsonObject(); myTask["Name"] = "task " + i + DateTime.Now; myTask["State"] = "In-Progress"; myTask["WorkProduct"] = myStory["_ref"]; CreateResult createTask = restApi.Create(workspaceRef, "Task", myTask); myTask = restApi.GetByReference(createTask.Reference, "FormattedID", "Owner", "State"); Console.WriteLine(myTask["FormattedID"]); } } catch (Exception e) { Console.WriteLine(e); } }
private void AssertCanDelete(RallyRestApi restApi, bool includeFullData = false) { // Create test defect var defect = TestHelperCreateDefect(restApi, includeFullData); var defectOid = Ref.GetOidFromRef(defect); OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(defect)); dynamic testDefectEmpty = restApi.GetByReference(defect); Assert.IsNull(testDefectEmpty); }
private void AssertCanUpdate(RallyRestApi restApi) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "Dont delete me please " + DateTime.Now.Second; OperationResult response = restApi.Update("Defect", defectOid, dynamicJson); Assert.AreEqual(0, response.Errors.Count); dynamic updateDefect = restApi.GetByReference("/Defect/" + defectOid + ".js"); Assert.AreEqual(dynamicJson["Name"], updateDefect.Name); }
private void AssertCanCreate(RallyRestApi restApi) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "C# Json Rest Toolkit Test Defect"; CreateResult response = restApi.Create("defect", dynamicJson); Assert.AreEqual(0, response.Errors.Count); Assert.IsTrue(response.Reference.ToLower().Contains("defect")); dynamic testDefect = restApi.GetByReference(response.Reference); Assert.AreEqual(dynamicJson["Name"], testDefect.Name); defectOid = Ref.GetOidFromRef(response.Reference); }
private void AssertCanDelete(RallyRestApi restApi) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "C# Json Rest Toolkit Test Defect"; CreateResult response = restApi.Create("defect", dynamicJson); Assert.AreEqual(0, response.Errors.Count); Assert.IsTrue(response.Reference.ToLower().Contains("defect")); OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(response.Reference)); dynamic testDefectEmpty = restApi.GetByReference(response.Reference); Assert.IsNull(testDefectEmpty); }
public void GetByReferenceTest() { RallyRestApi restApi = GetRallyRestApi(); // Create test defect var defect = TestHelperCreateDefect(restApi); var defectOid = Ref.GetOidFromRef(defect); dynamic response = restApi.GetByReference("/Defect/" + defectOid + ".js"); Assert.AreEqual(defectOid, response.ObjectID.ToString()); // Now delete it TestHelperDeleteItem(restApi, defect); }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0"); String apiKey = "_abc123"; restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false); String workspaceRef = "/workspace/1011574887"; //non-default workspace of the user String projectRef = "/project/1791269111"; //a non-default project of the user (inside the workspace above) try { //create testset DynamicJsonObject myTestSet = new DynamicJsonObject(); myTestSet["Name"] = "important set " + DateTime.Now; myTestSet["Project"] = projectRef; CreateResult createTestSet = restApi.Create(workspaceRef, "TestSet", myTestSet); myTestSet = restApi.GetByReference(createTestSet.Reference, "FormattedID", "Project"); Console.WriteLine(myTestSet["FormattedID"] + " " + myTestSet["Project"]._refObjectName); //find current iteration Request iterationRequest = new Request("Iteration"); iterationRequest.Project = projectRef; iterationRequest.ProjectScopeDown = false; iterationRequest.ProjectScopeUp = false; iterationRequest.Fetch = new List <string>() { "ObjectID", "Name" }; iterationRequest.Query = new Query("(StartDate <= Today)").And(new Query("(EndDate >= Today)")); QueryResult queryResults = restApi.Query(iterationRequest); if (queryResults.TotalResultCount > 0) { Console.WriteLine(queryResults.Results.First()["Name"] + " " + queryResults.Results.First()["ObjectID"]); myTestSet["Iteration"] = queryResults.Results.First()._ref; OperationResult updateResult = restApi.Update(myTestSet["_ref"], myTestSet); } else { Console.WriteLine("No current iterations"); } } catch (Exception e) { Console.WriteLine(e); } }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0"); DynamicJsonObject user = restApi.GetCurrentUser(); String userRef = user["_ref"]; String workspaceRef = "/workspace/11111"; //use valid workspace OID in your Rally String projectRef = "/project/12345"; //use valid project OID in your Rally DynamicJsonObject myStory = new DynamicJsonObject(); myStory["Name"] = "my story"; myStory["Project"] = projectRef; myStory["Owner"] = userRef; CreateResult createResult = restApi.Create(workspaceRef, "HierarchicalRequirement", myStory); myStory = restApi.GetByReference(createResult.Reference, "FormattedID", "Owner", "Project"); Console.WriteLine(myStory["FormattedID"] + " " + myStory["Owner"]._refObjectName + " " + myStory["Project"]._refObjectName); }
private void AssertCanUpdate(RallyRestApi restApi) { // Create test defect var defect = TestHelperCreateDefect(restApi); var defectOid = Ref.GetOidFromRef(defect); var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "Dont delete me please " + DateTime.Now.Second; OperationResult response = restApi.Update("Defect", defectOid, dynamicJson); Assert.AreEqual(0, response.Errors.Count); dynamic updateDefect = restApi.GetByReference("/Defect/" + defectOid + ".js"); Assert.AreEqual(dynamicJson["Name"], updateDefect.Name); // Now delete it TestHelperDeleteItem(restApi, defect); }
public void ExampleMethodText() { string username = "******"; string password = "******"; // Initialize the REST API. You can specify a web service version if needed in the constructor. RallyRestApi restApi = new RallyRestApi(); restApi.Authenticate(username, password, "https://preview.rallydev.com", proxy: null, allowSSO: false); //Create an item DynamicJsonObject toCreate = new DynamicJsonObject(); toCreate["Name"] = "My Defect"; CreateResult createResult = restApi.Create("defect", toCreate); //Update the item DynamicJsonObject toUpdate = new DynamicJsonObject(); toUpdate["Description"] = "This is my defect."; OperationResult updateResult = restApi.Update(createResult.Reference, toUpdate); //Get the item DynamicJsonObject item = restApi.GetByReference(createResult.Reference); //Query for items Request request = new Request("defect"); request.Fetch = new List <string>() { "Name", "Description", "FormattedID" }; request.Query = new Query("Name", Query.Operator.Equals, "My Defect"); QueryResult queryResult = restApi.Query(request); foreach (var result in queryResult.Results) { //Process item as needed } //Delete the item OperationResult deleteResult = restApi.Delete(createResult.Reference); }
private void AssertCanDelete(RallyRestApi restApi, bool includeFullData = false) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "C# Json Rest Toolkit Test Defect"; if (includeFullData) { dynamicJson["Owner"] = restApi.GetCurrentUser()["_ref"]; dynamicJson["Package"] = "Package A"; } CreateResult response = restApi.Create("defect", dynamicJson); Assert.AreEqual(0, response.Errors.Count); Assert.IsTrue(response.Reference.ToLower().Contains("defect")); OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(response.Reference)); dynamic testDefectEmpty = restApi.GetByReference(response.Reference); Assert.IsNull(testDefectEmpty); }
static void Main(string[] args) { //Initialize the REST API RallyRestApi restApi; restApi = new RallyRestApi("*****@*****.**", "topsecret", "https://rally1.rallydev.com", "v2.0"); //Set our Workspace and Project scopings String workspaceRef = "/workspace/1111"; //use valid OID of your workspace String projectRef = "/project/2222"; //use valid OID of your project bool projectScopingUp = false; bool projectScopingDown = true; Request userRequest = new Request("User"); userRequest.Workspace = workspaceRef; userRequest.Project = projectRef; userRequest.ProjectScopeUp = projectScopingUp; userRequest.ProjectScopeDown = projectScopingDown; /* * userRequest.Fetch = new List<string>() * { * "Role", * "CostCenter", * "LastLoginDate", * "OfficeLocation", * "CreationDate" * };*/ userRequest.Query = new Query("UserName", Query.Operator.Equals, "*****@*****.**"); QueryResult userResults = restApi.Query(userRequest); String userRef = userResults.Results.First()._ref; DynamicJsonObject user = restApi.GetByReference(userRef, "Name", "Role", "CostCenter", "LastLoginDate", "OfficeLocation", "CreationDate"); String role = user["Role"]; String costCenter = user["CostCenter"]; String lastLoginDate = user["LastLoginDate"]; String officeLocation = user["OfficeLocation"]; String creationDate = user["CreationDate"]; Console.WriteLine("Role: " + role + " CostCenter: " + costCenter + " LastLoginDate: " + lastLoginDate + " OfficeLocation: " + officeLocation + " CreationDate: " + creationDate); }
static void Main(string[] args) { RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0"); String workspaceRef = "/workspace/11111"; //use valid workspace OID in your Rally String projectRef = "/project/12345"; //use valid project OID in your Rally String userRef = "/user/777"; DynamicJsonObject d = new DynamicJsonObject(); d["Name"] = "some bug"; d["Project"] = projectRef; d["Owner"] = userRef; CreateResult createResult = restApi.Create(workspaceRef, "Defect", d); DynamicJsonObject defect = restApi.GetByReference(createResult.Reference, "FormattedID"); Console.WriteLine(defect["FormattedID"]); //update defect defect["Description"] = "bad bug"; OperationResult updateResult = restApi.Update(defect["_ref"], defect); }
public void InitializeSteps() { var resultSteps = rallyResult["Steps"]; var stepsRef = resultSteps["_ref"]; var stepsFromRally = api.GetByReference(stepsRef); if (stepsFromRally.TotalResultCount > 0) { Steps = new List <TestCaseStep>(); foreach (var step in stepsFromRally.Results) { Steps.Add(new TestCaseStep() { StepNumber = step["StepIndex"], ExpectedText = step["ExpectedResult"], InputText = step["Input"] }); } } }
static void Main(string[] args) { RallyRestApi restApi; restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0"); String projectRef = "/project/12352608219"; Request request = new Request("TestSet"); request.Project = projectRef; request.Fetch = new List <string>() { "Name", "FormattedID", "TestCases" }; request.Query = new Query("FormattedID", Query.Operator.Equals, "TS31"); QueryResult result = restApi.Query(request); String testsetRef = result.Results.First()._ref; DynamicJsonObject testset = restApi.GetByReference(testsetRef, "TestCases"); Request request2 = new Request(testset["TestCases"]); request2.Fetch = new List <string>() { "Name", "FormattedID" }; request2.Limit = 1000; QueryResult result2 = restApi.Query(request2); int caseCount = 0; foreach (var testcase in result2.Results) { Console.WriteLine("TestCase: " + testcase["FormattedID"]); caseCount++; } Console.WriteLine(caseCount); }
static void Main(string[] args) { String userName = "******"; String userPassword = "******"; String serverUrl = "https://rally1.rallydev.com"; String wsapiVersion = "1.38"; RallyRestApi restApi = new RallyRestApi( userName, userPassword, serverUrl, wsapiVersion ); restApi.Headers[RallyRestApi.HeaderType.Vendor] = "Rally Software"; restApi.Headers[RallyRestApi.HeaderType.Name] = "RestExample_AddUsersToProject"; // Query for Project for which we want to add permissions Request projectRequest = new Request("project"); projectRequest.Fetch = new List <string>() { "Name", "Owner", "State", "Description" }; String projectName = "Avalanche Hazard Mapping"; projectRequest.Query = new Query("Name", Query.Operator.Equals, projectName); QueryResult queryProjectResults = restApi.Query(projectRequest); var myProject = queryProjectResults.Results.First(); String myProjectReference = myProject["_ref"]; Console.WriteLine("Project Name: " + myProject["Name"]); Console.WriteLine("State: " + myProject["State"]); // Query for User for whom we wish to add ProjectPermission Request userRequest = new Request("user"); userRequest.Fetch = new List <string>() { "UserName", "Subscription", "DisplayName" }; // User needing the permissions userRequest.Query = new Query("UserName", Query.Operator.Equals, "\"[email protected]\""); QueryResult queryUserResults = restApi.Query(userRequest); var myUser = queryUserResults.Results.First(); String myUserReference = myUser["_ref"]; Console.WriteLine("Username: "******"UserName"]); Console.WriteLine("Display Name: " + myUser["DisplayName"]); Console.WriteLine("Subscription: " + myUser["Subscription"]); // Setup required ProjectPermission data DynamicJsonObject newProjectPermission = new DynamicJsonObject(); newProjectPermission["User"] = myUser; newProjectPermission["Project"] = myProject; newProjectPermission["Role"] = "Editor"; // Create the permission in Rally CreateResult addProjectPermissionResult = restApi.Create("ProjectPermission", newProjectPermission); DynamicJsonObject fetchedProjectPermission = restApi.GetByReference(addProjectPermissionResult.Reference, "Name"); Console.WriteLine("Created ProjectPermission with Role: " + fetchedProjectPermission["Name"]); }
static void Main(string[] args) { //Initialize the REST API RallyRestApi restApi; // Rally parameters String userName = "******"; String userPassword = "******"; String rallyURL = "https://rally1.rallydev.com"; String wsapiVersion = "1.43"; restApi = new RallyRestApi( userName, userPassword, rallyURL, wsapiVersion ); //Set our Workspace and Project scopings String workspaceRef = "/workspace/12345678910"; String projectRef = "/project/12345678911"; bool projectScopingUp = false; bool projectScopingDown = true; // Find User Story that we want to pull attachment from // Tee up Story Request Request storyRequest = new Request("hierarchicalrequirement"); storyRequest.Workspace = workspaceRef; storyRequest.Project = projectRef; storyRequest.ProjectScopeDown = projectScopingDown; storyRequest.ProjectScopeUp = projectScopingUp; // Fields to Fetch storyRequest.Fetch = new List <string>() { "Name", "FormattedID", "Attachments" }; // Add a query storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, "US43"); // Query Rally for the Story QueryResult queryResult = restApi.Query(storyRequest); // Pull reference off of Story fetch DynamicJsonObject storyObject = queryResult.Results.First(); String storyReference = storyObject["_ref"]; Console.WriteLine("Looking for attachments off of Story: " + storyReference); // Grab the Attachments collection var storyAttachments = storyObject["Attachments"]; // Let's download the first attachment for starters var myAttachmentFromStory = storyAttachments[0]; // Pull the ref String myAttachmentRef = myAttachmentFromStory["_ref"]; Console.WriteLine("Found Attachment: " + myAttachmentRef); // Fetch fields for the Attachment string[] attachmentFetch = { "ObjectID", "Name", "Content", "ContentType", "Size" }; // Now query for the attachment DynamicJsonObject attachmentObject = restApi.GetByReference(myAttachmentRef, "true"); // Grab the AttachmentContent DynamicJsonObject attachmentContentFromAttachment = attachmentObject["Content"]; String attachmentContentRef = attachmentContentFromAttachment["_ref"]; // Lastly pull the content // Fetch fields for the Attachment string[] attachmentContentFetch = { "ObjectID", "Content" }; // Now query for the attachment Console.WriteLine("Querying for Content..."); DynamicJsonObject attachmentContentObject = restApi.GetByReference(attachmentContentRef, "true"); Console.WriteLine("AttachmentContent: " + attachmentObject["_ref"]); String base64EncodedContent = attachmentContentObject["Content"]; // File information String attachmentSavePath = "C:\\Users\\username\\"; String attachmentFileName = attachmentObject["Name"]; String fullAttachmentFile = attachmentSavePath + attachmentFileName; // Determine attachment Content mime-type String attachmentContentType = attachmentObject["ContentType"]; // Specify Image format System.Drawing.Imaging.ImageFormat attachmentImageFormat; try { attachmentImageFormat = getImageFormat(attachmentContentType); } catch (System.ArgumentException e) { Console.WriteLine("Invalid attachment file format:" + e.StackTrace); Console.WriteLine("Don't know how to handle: " + attachmentContentType); return; } try { // Convert base64 content to Image Console.WriteLine("Converting base64 AttachmentContent String to Image."); // Convert Base64 string to bytes byte[] bytes = Convert.FromBase64String(base64EncodedContent); Image myAttachmentImage; using (MemoryStream ms = new MemoryStream(bytes)) { myAttachmentImage = Image.FromStream(ms); // Save the image Console.WriteLine("Saving Image: " + fullAttachmentFile); myAttachmentImage.Save(fullAttachmentFile, System.Drawing.Imaging.ImageFormat.Jpeg); Console.WriteLine("Finished Saving Attachment: " + fullAttachmentFile); } } catch (Exception e) { Console.WriteLine("Unhandled exception occurred: " + e.StackTrace); Console.WriteLine(e.Message); } Console.ReadKey(); }
private void TestHelperDeleteItem(RallyRestApi restApi, string reference) { OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(reference)); dynamic testEmpty = restApi.GetByReference(reference); Assert.IsNull(testEmpty); }
static void Main(string[] args) { //Initialize the REST API RallyRestApi restApi; String rallyUserName = "******"; String rallyPassword = "******"; String rallyURL = "https://rally1.rallydev.com"; String wsapiVersion = "1.41"; String myWorkspaceName = "My Workspace"; restApi = new RallyRestApi( rallyUserName, rallyPassword, rallyURL, wsapiVersion ); // Get a Reference to Target Workspace Request workspaceRequest = new Request("workspace"); workspaceRequest.Fetch = new List <string>() { "Name", "ObjectID" }; workspaceRequest.Query = new Query("Name", Query.Operator.Equals, myWorkspaceName); QueryResult workspaceQueryResults = restApi.Query(workspaceRequest); var targetWorkspace = workspaceQueryResults.Results.First(); Console.WriteLine("Found Target Workspace: " + targetWorkspace["Name"]); String workspaceRef = targetWorkspace["_ref"]; //Query for Target Tag Request tagRequest = new Request("tag"); tagRequest.Fetch = new List <string>() { "Name", "ObjectID" }; // Query all Tags for a tag named "Montane" tagRequest.Query = new Query("Name", Query.Operator.Equals, "Tundra"); QueryResult queryTagResults = restApi.Query(tagRequest); var targetTagResult = queryTagResults.Results.First(); long tagOID = targetTagResult["ObjectID"]; DynamicJsonObject targetTag = restApi.GetByReference("tag", tagOID, "Name", "ObjectID"); // Query for User Story // FormattedID of target story String targetStoryFormattedID = "US5"; Request storyRequest = new Request("hierarchicalrequirement"); storyRequest.Fetch = new List <string>() { "Name", "ObjectID", "Iteration", "FormattedID", "Tags" }; storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, targetStoryFormattedID); QueryResult queryStoryResults = restApi.Query(storyRequest); var targetUserStory = queryStoryResults.Results.First(); Console.WriteLine("Found Target User Story: " + targetUserStory["Name"]); // Grab collection of existing Tags var existingTags = targetUserStory["Tags"]; // Summarize Existing Tags Console.WriteLine("Existing Tags for Story" + targetStoryFormattedID + ": "); foreach (var tag in existingTags) { Console.WriteLine(tag["Name"]); } long targetOID = targetUserStory["ObjectID"]; // Now do update of the User Story // Tags collection on object is expected to be a System.Collections.ArrayList var targetTagArray = existingTags; targetTagArray.Add(targetTag); DynamicJsonObject toUpdate = new DynamicJsonObject(); toUpdate["Tags"] = targetTagArray; OperationResult updateResult = restApi.Update("HierarchicalRequirement", targetOID, toUpdate); foreach (var error in updateResult.Errors) { Console.WriteLine(error.ToString()); } // Re-read target Story DynamicJsonObject updatedStory = restApi.GetByReference(targetUserStory["_ref"], "Tags,Name"); var updatedTags = updatedStory["Tags"]; // Summarize Updated Tags Console.WriteLine("Updated Tags for Story" + targetStoryFormattedID + ": "); foreach (var tag in updatedTags) { Console.WriteLine(tag["Name"]); } // Create a New Tag, and add New Tag to Story DynamicJsonObject newTag = new DynamicJsonObject(); newTag["Name"] = "Boreal"; CreateResult createResult = restApi.Create(workspaceRef, "Tag", newTag); // Get the ref of the created Tag String newTagRef = createResult.Reference; // Read the Target Tag DynamicJsonObject newTagRead = restApi.GetByReference(newTagRef, "Name"); // Add the newly-created Tag to the Story targetTagArray.Add(newTagRead); toUpdate["Tags"] = targetTagArray; updateResult = restApi.Update("HierarchicalRequirement", targetOID, toUpdate); // Re-read target Story updatedStory = restApi.GetByReference(targetUserStory["_ref"], "Tags,Name"); updatedTags = updatedStory["Tags"]; // Summarize Updated Tags Console.WriteLine("Updated Tags (with newly-created Tag for Story" + targetStoryFormattedID + ": "); foreach (var tag in updatedTags) { Console.WriteLine(tag["Name"]); } Console.ReadKey(); }
private void AssertCanUpdate(RallyRestApi restApi) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "Dont delete me please " + DateTime.Now.Second; OperationResult response = restApi.Update("Defect", defectOid, dynamicJson); Assert.AreEqual(0, response.Errors.Count); dynamic updateDefect = restApi.GetByReference("/Defect/" + defectOid + ".js"); Assert.AreEqual(dynamicJson["Name"], updateDefect.Name); }
private void AssertCanUpdate(RallyRestApi restApi) { // Create test defect var defect = TestHelperCreateDefect(restApi); var defectOid = Ref.GetOidFromRef(defect); var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "Dont delete me please " + DateTime.Now.Second; OperationResult response = restApi.Update("Defect", defectOid, dynamicJson); Assert.AreEqual(0, response.Errors.Count); dynamic updateDefect = restApi.GetByReference("/Defect/" + defectOid + ".js"); Assert.AreEqual(dynamicJson["Name"], updateDefect.Name); // Now delete it TestHelperDeleteItem(restApi, defect); }
private void AssertCanDelete(RallyRestApi restApi, bool includeFullData = false) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "C# Json Rest Toolkit Test Defect"; if (includeFullData) { dynamicJson["Owner"] = restApi.GetCurrentUser()["_ref"]; dynamicJson["Package"] = "Package A"; } CreateResult response = restApi.Create("defect", dynamicJson); Assert.AreEqual(0, response.Errors.Count); Assert.IsTrue(response.Reference.ToLower().Contains("defect")); OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(response.Reference)); dynamic testDefectEmpty = restApi.GetByReference(response.Reference); Assert.IsNull(testDefectEmpty); }
private void AssertCanCreate(RallyRestApi restApi) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "C# Json Rest Toolkit Test Defect"; CreateResult response = restApi.Create("defect", dynamicJson); Assert.AreEqual(0, response.Errors.Count); Assert.IsTrue(response.Reference.ToLower().Contains("defect")); dynamic testDefect = restApi.GetByReference(response.Reference); Assert.AreEqual(dynamicJson["Name"], testDefect.Name); defectOid = Ref.GetOidFromRef(response.Reference); }
public void ExampleMethodText() { string username = "******"; string password = "******"; // Initialize the REST API. You can specify a web service version if needed in the constructor. RallyRestApi restApi = new RallyRestApi(); restApi.Authenticate(username, password, "https://preview.rallydev.com", proxy: null, allowSSO: false); //Create an item DynamicJsonObject toCreate = new DynamicJsonObject(); toCreate["Name"] = "My Defect"; CreateResult createResult = restApi.Create("defect", toCreate); //Update the item DynamicJsonObject toUpdate = new DynamicJsonObject(); toUpdate["Description"] = "This is my defect."; OperationResult updateResult = restApi.Update(createResult.Reference, toUpdate); //Get the item DynamicJsonObject item = restApi.GetByReference(createResult.Reference); //Query for items Request request = new Request("defect"); request.Fetch = new List<string>() { "Name", "Description", "FormattedID" }; request.Query = new Query("Name", Query.Operator.Equals, "My Defect"); QueryResult queryResult = restApi.Query(request); foreach (var result in queryResult.Results) { //Process item as needed } //Delete the item OperationResult deleteResult = restApi.Delete(createResult.Reference); }
private void AssertCanDelete(RallyRestApi restApi) { var dynamicJson = new DynamicJsonObject(); dynamicJson["Name"] = "C# Json Rest Toolkit Test Defect"; CreateResult response = restApi.Create("defect", dynamicJson); Assert.AreEqual(0, response.Errors.Count); Assert.IsTrue(response.Reference.ToLower().Contains("defect")); OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(response.Reference)); dynamic testDefectEmpty = restApi.GetByReference(response.Reference); Assert.IsNull(testDefectEmpty); }
private void AssertCanDelete(RallyRestApi restApi, bool includeFullData = false) { // Create test defect var defect = TestHelperCreateDefect(restApi, includeFullData); var defectOid = Ref.GetOidFromRef(defect); OperationResult deleteResponse = restApi.Delete(Ref.GetRelativeRef(defect)); dynamic testDefectEmpty = restApi.GetByReference(defect); Assert.IsNull(testDefectEmpty); }