コード例 #1
0
        /// <summary>
        /// Iterates over the populated Dictionary object and pushes each attachment to the respective user story
        /// </summary>
        /// <param name="attachmentsDictionary"></param>
        /// <param name="attachmentContent"></param>
        /// <param name="attachmentContainer"></param>
        /// <param name="createUserStory"></param>
        private void PushAttachments(Dictionary <string, string> attachmentsDictionary, DynamicJsonObject attachmentContent, DynamicJsonObject attachmentContainer, CreateResult createUserStory)
        {
            foreach (KeyValuePair <string, string> attachmentPair in attachmentsDictionary)
            {
                try
                {
                    //create attachment content
                    attachmentContent[RallyConstant.Content] = attachmentPair.Key;
                    _attachmentContentCreateResult           = _rallyApi.Create(RallyConstant.AttachmentContent, attachmentContent);
                    _userStoryReference = _attachmentContentCreateResult.Reference;

                    //create attachment contianer
                    attachmentContainer[RallyConstant.Artifact]    = createUserStory.Reference;
                    attachmentContainer[RallyConstant.Content]     = _userStoryReference;
                    attachmentContainer[RallyConstant.Name]        = attachmentPair.Value;
                    attachmentContainer[RallyConstant.Description] = RallyConstant.EmailAttachment;
                    attachmentContainer[RallyConstant.ContentType] = SyncConstant.FileType;

                    //Create & associate the attachment to the respecitve user story
                    _attachmentContainerCreateResult = _rallyApi.Create(RallyConstant.Attachment, attachmentContainer);
                }
                catch (WebException e)
                {
                    Console.WriteLine("Attachment Failed: " + e.Message);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Creates the userstory with a feature or iteration
        /// Both feature and iteration are read only fields
        /// </summary>
        /// <param name="workspace"></param>
        /// <param name="project"></param>
        /// <param name="userstory"></param>
        /// <param name="userstoryDescription"></param>
        /// <param name="userstoryOwner"></param>

        public void CreateUserStory(string workspace, string project, string userstory, string userstoryDescription, string userstoryOwner)
        {
            //authenticate
            this.EnsureRallyIsAuthenticated();

            //DynamicJsonObject
            DynamicJsonObject toCreate = new DynamicJsonObject();

            toCreate[RALLY.WorkSpace]     = workspace;
            toCreate[RALLY.Project]       = project;
            toCreate[RALLY.Name]          = userstory;
            toCreate[RALLY.Description]   = userstoryDescription;
            toCreate[RALLY.Owner]         = userstoryOwner;
            toCreate[RALLY.PlanEstimate]  = "1";
            toCreate[RALLY.PortfolioItem] = RALLYQUERY.FeatureShareProject;
            //toCreate[RALLY.Iteration] = usIteration;

            try
            {
                CreateResult createUserStory = _rallyRestApi.Create(RALLY.HierarchicalRequirement, toCreate);
                Console.WriteLine("Created Userstory: " + createUserStory.Reference);
            }
            catch (WebException e)
            {
                Console.WriteLine(e.Message);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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"]);
        }
コード例 #6
0
		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);
		}
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        /// <summary>
        /// When passed an id of email message, method will create the user story with subject as user story title, and body as the description
        /// </summary>
        /// <param name="messageId"></param>
        private void CreateUserStoryWithEmail(UniqueId messageId)
        {
            _message      = _inboxFolder.GetMessage(messageId);
            _emailSubject = _message.Subject;
            _emailBody    = _message.TextBody;

            if (_emailSubject.IsEmpty())
            {
                _emailSubject = EMAIL.NoSubject;
            }

            _toCreate[RALLY.Name]          = (_emailSubject);
            _toCreate[RALLY.Description]   = (_emailBody);
            _toCreate[RALLY.PortfolioItem] = RALLYQUERY.FeatureShareProject;
            _createUserStory = _rallyRestApi.Create(RALLY.HierarchicalRequirement, _toCreate);
            Console.WriteLine("Created User Story: " + _emailSubject);
        }
コード例 #9
0
    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();
    }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
 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);
 }
コード例 #12
0
        private void AssertCreateFailure(RallyRestApi restApi)
        {
            var defect = new DynamicJsonObject();

            defect["Name"]      = "Sample Defect with invalid field";
            defect["Iteration"] = "Foo";
            CreateResult creationResult = restApi.Create("defect", defect);

            Assert.IsNull(creationResult.Reference);
            Assert.AreEqual(1, creationResult.Errors.Count);
            Assert.IsFalse(creationResult.Success);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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);
        }
        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);
            }
        }
コード例 #16
0
        static void Main(string[] args)
        {
            string tagName = "T3$T";

            RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            //get current user
            DynamicJsonObject user = new DynamicJsonObject();

            user = restApi.GetCurrentUser();
            Console.Out.WriteLine("owner " + user["_ref"]);


            //find workspaces owned by this user
            //equivalent to this endpoint: https://rally1.rallydev.com/slm/webservice/v2.0/subscription/1154643/workspaces?query=(Owner%20=%20%22/user/12345%22)

            DynamicJsonObject sub = restApi.GetSubscription("Workspaces");

            Request wRequest = new Request(sub["Workspaces"]);

            wRequest.Query = new Query("Owner", Query.Operator.Equals, user["_ref"]);
            QueryResult wResult = restApi.Query(wRequest);

            foreach (var workspace in wResult.Results)
            {
                //Console.Out.WriteLine(workspace["_refObjectName"] + " : " + workspace["_ref"]);
                Request tagRequest = new Request("tag");
                tagRequest.Query = new Query("Name", Query.Operator.Equals, tagName);
                QueryResult tagResult = restApi.Query(tagRequest);
                if (tagResult.TotalResultCount == 0)
                {
                    Console.Out.WriteLine("TAG " + tagName + " not found, creating");
                    DynamicJsonObject newTag = new DynamicJsonObject();
                    newTag["Name"]      = tagName;
                    newTag["Workspace"] = workspace["_ref"];
                    CreateResult createResult = restApi.Create("Tag", newTag);
                    Console.Out.WriteLine(createResult.Reference + " created in workspace " + workspace["_refObjectName"]);
                }
                else
                {
                    Console.Out.WriteLine("TAG " + tagName + " found in " + workspace["_refObjectName"]);
                    Console.Out.WriteLine(tagResult.Results.First()["_refObjectName"] + " " + tagResult.Results.First()["_ref"]);
                }
            }
        }
コード例 #17
0
ファイル: Common.cs プロジェクト: sharathannaiah/CMP
        public static void CreateTestCaseResultWork(string testcase, string result, string notes)
        {
            string rallyUser     = System.Configuration.ConfigurationManager.AppSettings["rallyUser"];
            string rallyPassword = System.Configuration.ConfigurationManager.AppSettings["rallyPassword"];
            string build         = System.Configuration.ConfigurationManager.AppSettings["build"];
            string workspaceRef  = "https://rally1.rallydev.com/slm/webservice/1.40/workspace/144782102.js";
            //Log into rally
            RallyRestApi restApi = new RallyRestApi(rallyUser, rallyPassword, "https://rally1.rallydev.com", "1.40");

            try
            {
                //Search to see if this test case exists

                Request request = new Request("testcase");
                request.Fetch = new List <string>
                {
                    "Name",
                    "ObjectID",
                };

                request.Query = new Query("Name", Query.Operator.Equals, testcase);
                QueryResult queryResult = restApi.Query(request);

                var result2  = queryResult.Results.First();
                var objectID = result2["ObjectID"];
                Console.WriteLine("Found the test case: " + result2["Name"] + " " + result2["ObjectID"]);

                //Create the test case result object
                DynamicJsonObject newTCResult = new DynamicJsonObject();
                newTCResult["Date"]     = DateTime.UtcNow.ToString("o");
                newTCResult["TestCase"] = objectID;
                newTCResult["Notes"]    = notes;
                newTCResult["Build"]    = build;
                newTCResult["Verdict"]  = result;

                CreateResult cr = restApi.Create(workspaceRef, "TestCaseResult", newTCResult);
                Console.WriteLine("Created test case result");
            }

            catch (InvalidOperationException e)
            {
                //If the test case doesn't exist, then we need to create it
                Console.WriteLine("Cannot find the test case: " + testcase);
            }
        }
コード例 #18
0
    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);
    }
コード例 #19
0
        private string TestHelperCreateDefect(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"));

            return(response.Reference);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        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);
        }
コード例 #23
0
ファイル: Common.cs プロジェクト: sharathannaiah/CMP
        //Creates the test case
        public static void CreateTestCaseWork(string testcase)
        {
            Console.WriteLine("CreateTestCaseWork method");
            string rallyUser     = System.Configuration.ConfigurationManager.AppSettings["rallyUser"];
            string rallyPassword = System.Configuration.ConfigurationManager.AppSettings["rallyPassword"];
            string workspaceRef  = "https://rally1.rallydev.com/slm/webservice/1.40/workspace/144782102.js";
            //Log into rally
            RallyRestApi restApi = new RallyRestApi(rallyUser, rallyPassword, "https://rally1.rallydev.com", "1.40");

            try
            {
                //Search to see if this test case already exists, if it does, we don't want to create another one so do nothing

                Request request = new Request("testcase");
                request.Fetch = new List <string>
                {
                    "Name",
                    "ObjectID",
                };

                request.Query = new Query("Name", Query.Operator.Equals, testcase);
                QueryResult queryResult = restApi.Query(request);

                var result   = queryResult.Results.First();
                var objectID = result["ObjectID"];
                Console.WriteLine("Found the test case: " + result["Name"] + " " + result["ObjectID"]);
            }

            catch (InvalidOperationException e)
            {
                //If the test case doesn't exist, then we need to create it
                DynamicJsonObject toCreate = new DynamicJsonObject();
                toCreate["Name"]   = testcase;
                toCreate["Method"] = "Automated";
                CreateResult createResult = restApi.Create(workspaceRef, "testcase", toCreate);

                Console.WriteLine("Created testcase: " + testcase);
            }
        }
コード例 #24
0
        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"]);
        }
コード例 #25
0
        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();
        }
コード例 #26
0
        static void Main(string[] args)
        {
            // Set user parameters
            String userName     = "******";
            String userPassword = "******";
            // Set Rally parameters
            String rallyURL          = "https://rally1.rallydev.com";
            String rallyWSAPIVersion = "1.36";
            //Initialize the REST API
            RallyRestApi restApi;

            restApi = new RallyRestApi(userName,
                                       userPassword,
                                       rallyURL,
                                       rallyWSAPIVersion);
            // Create Request for User
            Request userRequest = new Request("user");

            userRequest.Fetch = new List <string>()
            {
                "UserName",
                "Subscription",
                "DisplayName",
            };
            // Add a Query to the Request
            userRequest.Query = new Query("");
            // Query Rally
            QueryResult queryUserResults = restApi.Query(userRequest);
            // Grab resulting User object and Ref
            DynamicJsonObject myUser = new DynamicJsonObject();

            myUser = queryUserResults.Results.First();
            String myUserRef = myUser["_ref"];
            //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 add attachment to
            // 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"
            };
            // 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
            var    storyObject    = queryResult.Results.First();
            String storyReference = storyObject["_ref"];
            // Read In Image Content
            String imageFilePath = "C:\\Users\\username\\";
            String imageFileName = "image1.png";
            String fullImageFile = imageFilePath + imageFileName;
            Image  myImage       = Image.FromFile(fullImageFile);
            // Get length from Image.Length attribute - don't use this in REST though
            // REST expects the length of the image in number of bytes as converted to a byte array
            var imageFileLength = new FileInfo(fullImageFile).Length;

            Console.WriteLine("Image File Length from System.Drawing.Image: " + imageFileLength);
            // Convert Image to Base64 format
            string imageBase64String = ImageToBase64(myImage, System.Drawing.Imaging.ImageFormat.Png);
            // Length calculated from Base64String converted back
            var imageNumberBytes = Convert.FromBase64String(imageBase64String).Length;

            // This differs from just the Length of the Base 64 String!
            Console.WriteLine("Image File Length from Convert.FromBase64String: " + imageNumberBytes);
            // DynamicJSONObject for AttachmentContent
            DynamicJsonObject myAttachmentContent = new DynamicJsonObject();

            myAttachmentContent["Content"] = imageBase64String;
            try
            {
                CreateResult myAttachmentContentCreateResult = restApi.Create("AttachmentContent", myAttachmentContent);
                String       myAttachmentContentRef          = myAttachmentContentCreateResult.Reference;
                Console.WriteLine("Created: " + myAttachmentContentRef);
                // DynamicJSONObject for Attachment Container
                DynamicJsonObject myAttachment = new DynamicJsonObject();
                myAttachment["Artifact"]    = storyReference;
                myAttachment["Content"]     = myAttachmentContentRef;
                myAttachment["Name"]        = "AttachmentFromREST.png";
                myAttachment["Description"] = "Attachment Desc";
                myAttachment["ContentType"] = "image/png";
                myAttachment["Size"]        = imageNumberBytes;
                myAttachment["User"]        = myUserRef;
                CreateResult  myAttachmentCreateResult = restApi.Create("Attachment", myAttachment);
                List <string> createErrors             = myAttachmentContentCreateResult.Errors;
                for (int i = 0; i < createErrors.Count; i++)
                {
                    Console.WriteLine(createErrors[i]);
                }
                String myAttachmentRef = myAttachmentCreateResult.Reference;
                Console.WriteLine("Created: " + myAttachmentRef);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unhandled exception occurred: " + e.StackTrace);
                Console.WriteLine(e.Message);
            }
        }
コード例 #27
0
        static void Main(string[] args)
        {
            // Set user parameters
            String userName     = "******";
            String userPassword = "******";
            // Set Rally parameters
            String rallyURL          = "https://rally1.rallydev.com";
            String rallyWSAPIVersion = "1.40";
            //Initialize the REST API
            RallyRestApi restApi;

            restApi = new RallyRestApi(userName,
                                       userPassword,
                                       rallyURL,
                                       rallyWSAPIVersion);
            // Changeset Owner Username
            String changesetOwner = "*****@*****.**";
            // SCM Repository Name
            String scmRepositoryName = "MySCMRepo";
            // FormattedID of Artifact to associate to
            String storyFormattedID = "US14";

            // Create Request for User
            Request userRequest = new Request("user");

            userRequest.Fetch = new List <string>()
            {
                "UserName",
                "Subscription",
                "DisplayName"
            };
            // Add a Query to the Request
            userRequest.Query = new Query("UserName", Query.Operator.Equals, changesetOwner);
            // Query Rally
            QueryResult queryUserResults = restApi.Query(userRequest);
            // Grab resulting User object and Ref
            DynamicJsonObject myUser = new DynamicJsonObject();

            myUser = queryUserResults.Results.First();
            String myUserRef = myUser["_ref"];
            //Set our Workspace and Project scopings
            String workspaceRef       = "/workspace/12345678910";
            String projectRef         = "/project/12345678911";
            bool   projectScopingUp   = false;
            bool   projectScopingDown = true;
            // Get handle to SCM Repository
            Request scmRequest = new Request("SCMRepository");

            scmRequest.Fetch = new List <string>()
            {
                "ObjectID",
                "Name",
                "SCMType"
            };
            // Add query
            scmRequest.Query = new Query("Name", Query.Operator.Equals, scmRepositoryName);
            // Query Rally
            QueryResult       querySCMResults = restApi.Query(scmRequest);
            DynamicJsonObject myRepository    = new DynamicJsonObject();

            myRepository = querySCMResults.Results.First();
            // Find User Story that we want to add Changeset to
            // 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",
                "Changesets"
            };
            // Add a query
            storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, storyFormattedID);
            // Query Rally for the Story
            QueryResult queryResult = restApi.Query(storyRequest);
            // Pull reference off of Story fetch
            var    storyObject    = queryResult.Results.First();
            String storyReference = storyObject["_ref"];
            // Pull existing Changesets off of Story
            var existingChangesets = storyObject["Changesets"];

            Console.WriteLine("Story: " + storyFormattedID);
            Console.WriteLine("Number of Existing Changesets: " + existingChangesets.Count);
            // DynamicJSONObject for New Changeset
            DynamicJsonObject newChangeset = new DynamicJsonObject();
            // Commit Time Stamp
            String commitTimeStamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ");

            // Populate Changeset Attributes
            newChangeset["SCMRepository"]   = myRepository;
            newChangeset["Author"]          = myUserRef;
            newChangeset["Revision"]        = "2451";
            newChangeset["Uri"]             = "https://svnrepo.company.com:8001";
            newChangeset["CommitTimestamp"] = commitTimeStamp;
            // Artifacts list
            var changeSetArtifacts = new ArrayList();

            changeSetArtifacts.Add(storyObject);
            // Update attribute on Changeset
            newChangeset["Artifacts"] = changeSetArtifacts;
            try
            {
                // Create the Changeset
                Console.WriteLine("Creating Rally Changeset...");
                CreateResult myChangesetCreateResult = restApi.Create("ChangeSet", newChangeset);
                String       myChangesetRef          = myChangesetCreateResult.Reference;
                Console.WriteLine("Successfully Created Rally Changeset: " + myChangesetRef);
                List <string> createWarnings = myChangesetCreateResult.Warnings;
                for (int i = 0; i < createWarnings.Count; i++)
                {
                    Console.WriteLine(createWarnings[i]);
                }

                List <string> createErrors = myChangesetCreateResult.Errors;
                for (int i = 0; i < createErrors.Count; i++)
                {
                    Console.WriteLine(createErrors[i]);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception occurred creating Rally Changeset: " + e.StackTrace);
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }
コード例 #28
0
        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";
            String projectRef   = "/project/1791269111";
            String userName     = "******";

            try
            {
                Request storyRequest = new Request("hierarchicalrequirement");
                storyRequest.Workspace = workspaceRef;
                storyRequest.Project   = projectRef;

                storyRequest.Fetch = new List <string>()
                {
                    "FormattedID"
                };


                storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, "US2917");
                QueryResult queryResult    = restApi.Query(storyRequest);
                var         storyObject    = queryResult.Results.First();
                String      storyReference = storyObject["_ref"];

                Request userRequest = new Request("user");
                userRequest.Fetch = new List <string>()
                {
                    "UserName"
                };


                userRequest.Query = new Query("UserName", Query.Operator.Equals, userName);
                QueryResult       queryUserResults = restApi.Query(userRequest);
                DynamicJsonObject user             = new DynamicJsonObject();
                user = queryUserResults.Results.First();
                String userRef = user["_ref"];


                String imageFilePath = "C:\\images\\";
                String imageFileName = "rally.png";
                String fullImageFile = imageFilePath + imageFileName;
                Image  myImage       = Image.FromFile(fullImageFile);


                string imageBase64String = ImageToBase64(myImage, System.Drawing.Imaging.ImageFormat.Png);
                var    imageNumberBytes  = Convert.FromBase64String(imageBase64String).Length;
                Console.WriteLine("Image size: " + imageNumberBytes);

                DynamicJsonObject myAttachmentContent = new DynamicJsonObject();
                myAttachmentContent["Content"] = imageBase64String;
                CreateResult myAttachmentContentCreateResult = restApi.Create(workspaceRef, "AttachmentContent", myAttachmentContent);
                String       myAttachmentContentRef          = myAttachmentContentCreateResult.Reference;
                Console.WriteLine(myAttachmentContentRef);

                DynamicJsonObject myAttachment = new DynamicJsonObject();
                myAttachment["Artifact"]    = storyReference;
                myAttachment["Content"]     = myAttachmentContentRef;
                myAttachment["Name"]        = "rally.png";
                myAttachment["Description"] = "Attachment Desc";
                myAttachment["ContentType"] = "image/png";
                myAttachment["Size"]        = imageNumberBytes;
                myAttachment["User"]        = userRef;

                CreateResult myAttachmentCreateResult = restApi.Create(workspaceRef, "Attachment", myAttachment);

                List <string> createErrors = myAttachmentContentCreateResult.Errors;
                for (int i = 0; i < createErrors.Count; i++)
                {
                    Console.WriteLine(createErrors[i]);
                }

                String myAttachmentRef = myAttachmentCreateResult.Reference;
                Console.WriteLine(myAttachmentRef);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
コード例 #29
0
		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);
		}
コード例 #30
0
		private void AssertCreateFailure(RallyRestApi restApi)
		{
			var defect = new DynamicJsonObject();
			defect["Name"] = "Sample Defect with invalid field";
			defect["Iteration"] = "Foo";
			CreateResult creationResult = restApi.Create("defect", defect);
			Assert.IsNull(creationResult.Reference);
			Assert.AreEqual(1, creationResult.Errors.Count);
			Assert.IsFalse(creationResult.Success);
		}
コード例 #31
0
        static void Main(string[] args)
        {
            RallyRestApi restApi;

            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String  projectRef    = "/project/12352608219";
            Request defectRequest = new Request("Defect");

            defectRequest.Project = projectRef;
            defectRequest.Fetch   = new List <string>()
            {
                "Name",
                "FormattedID",
                "Tasks"
            };

            defectRequest.Query = new Query("FormattedID", Query.Operator.Equals, "DE8");
            QueryResult defectResults = restApi.Query(defectRequest);
            String      defRef        = defectResults.Results.First()._ref;
            String      defName       = defectResults.Results.First().Name;

            Console.WriteLine(defName + " " + defRef);
            DynamicJsonObject defect            = restApi.GetByReference(defRef, "Name", "FormattedID", "Tasks");
            String            taskCollectionRef = defect["Tasks"]._ref;

            Console.WriteLine(taskCollectionRef);

            ArrayList taskList = new ArrayList();

            foreach (var d in defectResults.Results)
            {
                Request     tasksRequest = new Request(d["Tasks"]);
                QueryResult tasksResult  = restApi.Query(tasksRequest);
                foreach (var t in tasksResult.Results)
                {
                    var tName        = t["Name"];
                    var tFormattedID = t["FormattedID"];
                    Console.WriteLine("Task: " + tName + " " + tFormattedID);
                    DynamicJsonObject task = new DynamicJsonObject();
                    task["_ref"] = t["_ref"];
                    taskList.Add(task);
                }
            }

            Console.WriteLine("Count of elements in the collection before adding a new task: " + taskList.Count);

            DynamicJsonObject newTask = new DynamicJsonObject();

            newTask["Name"]        = "another last task";
            newTask["WorkProduct"] = defRef;
            CreateResult createResult = restApi.Create(projectRef, "Task", newTask);

            newTask = restApi.GetByReference(createResult.Reference, "FormattedID", "Name", "WorkProduct");
            Console.WriteLine(newTask["FormattedID"] + " " + newTask["Name"] + " WorkProduct:" + newTask["WorkProduct"]["FormattedID"]);
            taskList.Add(newTask);

            Console.WriteLine("Count of elements in the array after adding a new task: " + taskList.Count);
            defect["Tasks"] = taskList;
            OperationResult updateResult = restApi.Update(defRef, defect);
        }
コード例 #32
0
 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);
 }
コード例 #33
0
		private string TestHelperCreateDefect(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"));

			return response.Reference;
		}