public async Task ReconcileIntegrationTest() { var client = new VstsRestClient(_config.Organization, _config.Token); var projectId = (await client.GetAsync(Project.Properties(_config.Project))).Id; var releasePipeline = await client.GetAsync(ReleaseManagement.Definition(_config.Project, "1")) .ConfigureAwait(false); await ManagePermissions .ForReleasePipeline(client, projectId, releasePipeline.Id, releasePipeline.Path) .Permissions(Release.DeleteReleasePipelines) .SetToAsync(PermissionId.Allow); var rule = new NobodyCanDeleteReleases(client); (await rule.EvaluateAsync(projectId, releasePipeline)) .ShouldBe(false); await rule.ReconcileAsync(projectId, releasePipeline.Id); await Policy .Handle <Exception>() .WaitAndRetryAsync(Constants.NumRetries, t => TimeSpan.FromSeconds(t)) .ExecuteAsync(async() => { (await rule.EvaluateAsync(projectId, releasePipeline)).ShouldBe(true); }); }
public async Task InvokeReconcile(string scope, string rule, string item) { // Arrange var client = new VstsRestClient(_config.Organization, _config.Token); var token = await SessionToken(client, "tas", _config.ExtensionName); var request = new DummyHttpRequest { Headers = { ["Authorization"] = $"Bearer {token}" } }; // Act await _host.Jobs.CallAsync(nameof(ReconcileFunction), new Dictionary <string, object> { ["request"] = request, ["organization"] = _config.Organization, ["project"] = _config.ProjectId, ["scope"] = scope, ["ruleName"] = rule, ["item"] = item }).ConfigureAwait(false); // Assert await _host.Jobs .Ready() .ThrowIfFailed() .Purge().ConfigureAwait(false); }
public async Task ReconcileIntegrationTest() { var client = new VstsRestClient(_config.Organization, _config.Token); var projectId = (await client.GetAsync(Project.Properties(_config.Project))).Id; await ManagePermissions .ForRepository(client, projectId, RepositoryId) .Permissions(Permissions.DeleteRepository) .SetToAsync(PermissionId.Allow); var rule = new NobodyCanDeleteTheRepository(client); (await rule.EvaluateAsync(projectId, RepositoryId)) .ShouldBe(false); await rule.ReconcileAsync(projectId, RepositoryId); await Policy .Handle <Exception>() .WaitAndRetryAsync(Constants.NumRetries, t => TimeSpan.FromSeconds(t)) .ExecuteAsync(async() => { (await rule.EvaluateAsync(projectId, RepositoryId)).ShouldBe(true); }); }
public async Task ReleaseWithApproval() { const int id = 79; var response = File.ReadAllText(Path.Join(ReleaseAssets, "Approved.json")); var request = new VstsRequest <Response.Release>("/keeas"); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 200, body: response); var client = new VstsRestClient("dummy", "pat"); var release = await client.GetAsync(request); release.Id.ShouldBe(id); release.Environments.ShouldNotBeEmpty(); release.Tags.ShouldNotBeEmpty(); var env = release.Environments.Skip(1).First(); env.Id.ShouldNotBe(0); env.PreDeployApprovals.ShouldNotBeEmpty(); env.DeploySteps.ShouldNotBeEmpty(); env.Name.ShouldNotBeNullOrEmpty(); env.DeployPhasesSnapshot.ShouldNotBeEmpty(); var phaseSnapshot = env.DeployPhasesSnapshot.First(); phaseSnapshot.PhaseType.ShouldNotBeEmpty(); phaseSnapshot.DeploymentInput.ShouldNotBeNull(); phaseSnapshot.DeploymentInput.QueueId.ShouldNotBe(0); var deploy = env.DeploySteps.First(); deploy.RequestedFor.ShouldNotBeNull(); deploy.RequestedFor.Id.ShouldNotBeNull(); deploy.LastModifiedBy.ShouldNotBeNull(); var predeploy = env.PreDeployApprovals.First(); predeploy.Status.ShouldNotBeNullOrEmpty(); predeploy.ApprovalType.ShouldNotBeNullOrEmpty(); predeploy.IsAutomated.ShouldBe(false); predeploy.ApprovedBy.ShouldNotBeNull(); predeploy.ApprovedBy.DisplayName.ShouldNotBeNullOrEmpty(); var conditions = env.Conditions.ToList(); conditions.ShouldNotBeEmpty(); var condition = conditions.First(); condition.Result.ShouldBe(false); condition.Name.ShouldNotBeNullOrEmpty(); condition.ConditionType.ShouldNotBeEmpty(); condition.Value.ShouldNotBeNull(); var artifact = release.Artifacts.First(); artifact.Type.ShouldNotBeNull(); artifact.Alias.ShouldNotBeNull(); }
public async Task ReconcileIntegrationTestForMasterBranchPermission() { var repositoryId = "6435e3f0-15b7-4302-814d-4ab586e61f8b"; var client = new VstsRestClient(_config.Organization, _config.Token); var projectId = (await client.GetAsync(Project.Properties(_config.Project))).Id; await ManagePermissions .ForMasterBranch(client, projectId, repositoryId) .Permissions(Permissions.BypassPoliciesPullRequest) .SetToAsync(PermissionId.Allow); var rule = new NobodyCanBypassPolicies(client); (await rule.EvaluateAsync(projectId, repositoryId)) .ShouldBe(false); await rule.ReconcileAsync(projectId, repositoryId); await Policy .Handle <Exception>() .WaitAndRetryAsync(Constants.NumRetries, t => TimeSpan.FromSeconds(t)) .ExecuteAsync(async() => { (await rule.EvaluateAsync(projectId, repositoryId)).ShouldBe(true); }); }
public async Task EvaluateIntegrationTest() { var client = new VstsRestClient(_config.Organization, _config.Token); var projectId = (await client.GetAsync(Project.Properties(_config.Project))).Id; var rule = new NobodyCanDeleteTheRepository(client); (await rule.EvaluateAsync(projectId, RepositoryId)).ShouldBe(true); }
public async Task Reconcile() { //Arrange var client = new VstsRestClient(_config.Organization, _config.Token); //Act var rule = new PipelineHasRequiredRetentionPolicy(client) as IReconcile; await rule.ReconcileAsync(_config.Project, PipelineId); }
public async Task GetJsonThrowsOnError() { var request = new VstsRequest <JObject>("/get/some/data"); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 500); var client = new VstsRestClient("dummy", "pat"); await Assert.ThrowsAsync <FlurlHttpException>(async() => await client.GetAsync(request)); }
public async Task PutThrowsOnError() { var request = new VstsRequest <int, int>("/put/some/data"); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 500); var client = new VstsRestClient("dummy", "pat"); await Assert.ThrowsAsync <FlurlHttpException>(async() => await client.PutAsync(request, 3)); }
public void TestUserEntitlement() { var client = new VstsRestClient(_config.Organization, _config.Token); var result = client .Get(MemberEntitlementManagement.UserEntitlements()) .ToList(); var first = result.First(x => x.LastAccessedDate != default); first.DateCreated.ShouldNotBe(default);
public async Task ConditionResultOnReleaseEnvironmentMustBeNullable() { var response = File.ReadAllText(Path.Join(EnvironmentAssets, "ConditionResultNull.json")); var request = new VstsRequest <Environment>("/keeas"); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 200, body: response); var client = new VstsRestClient("dummy", "pat"); await client.GetAsync(request); }
public async Task GetRawUrl() { var url = new Uri("http://www.bla.nl"); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 200, body: "{}"); var client = new VstsRestClient("dummy", "token"); await client.GetAsync <Response.Build>(url); httpTest.ShouldHaveCalled(url.ToString()); }
public async Task EvaluateIntegrationTest() { //Arrange var client = new VstsRestClient(_config.Organization, _config.Token); var releasePipeline = await client.GetAsync(ReleaseManagement.Definition(_config.Project, PipelineId)) .ConfigureAwait(false); //Act var rule = new PipelineHasRequiredRetentionPolicy(client); var result = await rule.EvaluateAsync(_config.Project, releasePipeline); //Assert result.ShouldBe(true); }
public async Task ReconcileIntegrationTest() { var client = new VstsRestClient(_config.Organization, _config.Token); await ManagePermissions .ForTeamProject(client, _config.Project) .Permissions((4, "52d39943-cb85-4d7f-8fa8-c6baac873819")) .SetToAsync(PermissionId.Allow); var rule = new NobodyCanDeleteTheTeamProject(client); (await rule.EvaluateAsync(_config.Project)) .ShouldBe(false); await rule.ReconcileAsync(_config.Project); await Policy .Handle <Exception>() .WaitAndRetryAsync(Constants.NumRetries, t => TimeSpan.FromSeconds(t)) .ExecuteAsync(async() => { (await rule.EvaluateAsync(_config.Project)).ShouldBe(true); }); }
public QueryBatchProcessorIntegrationTests(TestConfig config) { var client = new VstsRestClient("asdfasdfasdf", config.Token); _processor = new QueryBatchProcessor(client); }
public AuditServiceTests(TestConfig config) { _client = new VstsRestClient(config.Organization, config.Token); }