public async Task UpdateProjectSetExternalOAuth()
        {
            var externalOAuth = new ExternalOAuth
            {
                Url = "http://www.externalOAuth.com/",
                AuthorizationHeader = "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
            };

            await WithCurrentProject(client,
                                     project => SetExternalOAuth(project, null),
                                     async project =>
            {
                Assert.NotNull(project);
                Assert.Null(project.ExternalOAuth);

                var action = new SetExternalOAuthUpdateAction
                {
                    ExternalOAuth = externalOAuth
                };

                var updatedProject = await
                                     TryToUpdateCurrentProject(client, project, action.ToList());

                Assert.NotNull(updatedProject.ExternalOAuth);
                Assert.Equal(externalOAuth.Url, updatedProject.ExternalOAuth.Url);

                // then undo this change again
                action = new SetExternalOAuthUpdateAction
                {
                    ExternalOAuth = null
                };
                var projectWithNullExternalOAuth = await
                                                   TryToUpdateCurrentProject(client, project, action.ToList());
                Assert.Null(projectWithNullExternalOAuth.ExternalOAuth);
            });
        }
        public static List <UpdateAction <Project> > SetExternalOAuth(Project project, ExternalOAuth externalOAuth)
        {
            var actions = new List <UpdateAction <Project> >();

            actions.AddUpdate(new SetExternalOAuthUpdateAction
            {
                ExternalOAuth = externalOAuth
            });
            return(actions);
        }