Пример #1
0
        public async Task WithPermission()
        {
            var fixture = new Fixture();

            ManageProjectPropertiesPermission(fixture);

            var tokenizer = new Mock <ITokenizer>();

            tokenizer
            .Setup(x => x.Principal(It.IsAny <string>()))
            .Returns(PrincipalWithClaims());

            var vstsClient = new Mock <IVstsRestClient>();

            vstsClient
            .Setup(x => x.GetAsync(It.Is <IVstsRequest <Response.PermissionsProjectId> >(req =>
                                                                                         req.QueryParams.Values.Contains("ab84d5a2-4b8d-68df-9ad3-cc9c8884270c"))))
            .Returns(Task.FromResult(fixture.Create <Response.PermissionsProjectId>()))
            .Verifiable();

            var request = new HttpRequestMessage();

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "");

            var function = new ReconcileFunction(vstsClient.Object,
                                                 new IBuildPipelineRule[0], new IReleasePipelineRule[0], new IProjectRule[0], new IRepositoryRule[0], tokenizer.Object);

            (await function
             .HasPermissionAsync(request, "raboweb", "TAS"))
            .ShouldBeOfType <OkObjectResult>()
            .Value
            .ShouldBe(true);
            vstsClient.Verify();
        }
Пример #2
0
        public async Task UnauthorizedWithoutHeaderWhenHasPermission()
        {
            var request = new HttpRequestMessage();

            request.Headers.Authorization = null;

            var function = new ReconcileFunction(null, new IBuildPipelineRule[0], new IReleasePipelineRule[0], new IProjectRule[0], new IRepositoryRule[0],
                                                 new Mock <ITokenizer>().Object);

            (await function
             .HasPermissionAsync(request, "raboweb", "TAS"))
            .ShouldBeOfType <UnauthorizedResult>();
        }
Пример #3
0
        public async Task UnauthorizedWithoutNameClaimWhenHasPermission()
        {
            var tokenizer = new Mock <ITokenizer>();

            tokenizer
            .Setup(x => x.Principal(It.IsAny <string>()))
            .Returns(new ClaimsPrincipal());

            var request = new HttpRequestMessage();

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "");

            var function = new ReconcileFunction(null, new IBuildPipelineRule[0], new IReleasePipelineRule[0], new IProjectRule[0], new IRepositoryRule[0],
                                                 tokenizer.Object);

            (await function
             .HasPermissionAsync(request, "raboweb", "TAS"))
            .ShouldBeOfType <UnauthorizedResult>();
        }
Пример #4
0
        public async Task CanCheckPermissionsForUserWithUnknownVsIInTokenAndInvalidUserId()
        {
            var fixture = new Fixture();

            ManageProjectPropertiesPermission(fixture);

            var tokenizer = new Mock <ITokenizer>();

            tokenizer
            .Setup(x => x.Principal(It.IsAny <string>()))
            .Returns(PrincipalWithClaims());

            var vstsClient = new Mock <IVstsRestClient>();

            vstsClient
            .Setup(x => x.GetAsync(It.Is <IVstsRequest <Response.PermissionsProjectId> >(req =>
                                                                                         req.QueryParams.Values.Contains("ab84d5a2-4b8d-68df-9ad3-cc9c8884270c"))))
            .Returns(Task.FromResult <Response.PermissionsProjectId>(null))
            .Verifiable();

            vstsClient
            .Setup(x => x.GetAsync(It.Is <IVstsRequest <Response.PermissionsProjectId> >(req =>
                                                                                         req.QueryParams.Values.Contains("ef2e3683-8fb5-439d-9dc9-53af732e6387"))))
            .Returns(Task.FromResult <Response.PermissionsProjectId>(null))
            .Verifiable();

            var request = new HttpRequestMessage();

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "");
            request.RequestUri            =
                new System.Uri(
                    "https://dev.azure.com/reconcile/raboweb/TAS/haspermissions?userId=ef2e3683-8fb5-439d-9dc9-53af732e6387");

            var function = new ReconcileFunction(vstsClient.Object,
                                                 new IBuildPipelineRule[0], new IReleasePipelineRule[0], new IProjectRule[0], new IRepositoryRule[0], tokenizer.Object);

            (await function
             .HasPermissionAsync(request, "raboweb", "TAS"))
            .ShouldBeOfType <OkObjectResult>()
            .Value
            .ShouldBe(false);
            vstsClient.Verify();
        }