public CreatedAppFixture()
        {
            if (!isCreated)
            {
                Task.Run(async() =>
                {
                    try
                    {
                        await Apps.PostAppAsync(new CreateAppDto {
                            Name = AppName
                        });
                    }
                    catch (SquidexManagementException ex)
                    {
                        if (ex.StatusCode != 400)
                        {
                            throw;
                        }
                    }

                    var invite = new AssignContributorDto {
                        ContributorId = "*****@*****.**", Invite = true, Role = "Owner"
                    };

                    await Apps.PostContributorAsync(AppName, invite);
                }).Wait();

                isCreated = true;
            }
        }
Example #2
0
        public async Task <IActionResult> PostContributor(string app, [FromBody] AssignContributorDto request)
        {
            var command = request.ToCommand();

            var response = await InvokeCommandAsync(command);

            return(CreatedAtAction(nameof(GetContributors), new { app }, response));
        }
Example #3
0
        private async Task AssignContributor(string role = null)
        {
            var assignRequest = new AssignContributorDto
            {
                ContributorId = contributor, Role = role, Invite = true
            };

            await _.Apps.PostContributorAsync(_.AppName, assignRequest);
        }
        public async Task <IActionResult> PostContributor(string app, [FromBody] AssignContributorDto request)
        {
            var command = request.ToCommand();
            var context = await CommandBus.PublishAsync(command);

            var result   = context.Result <EntityCreatedResult <string> >();
            var response = ContributorAssignedDto.FromId(result.IdOrValue);

            return(Ok(response));
        }
Example #5
0
        public async Task Should_manage_contributors()
        {
            var contributorEmail = "*****@*****.**";
            var contributorRole1 = "Developer";
            var contributorRole2 = "Owner";

            // STEP 0:  Do not invite contributors when flag is false.
            var createRequest = new AssignContributorDto {
                ContributorId = "*****@*****.**"
            };

            var ex = await Assert.ThrowsAsync <SquidexManagementException>(() =>
            {
                return(_.Apps.PostContributorAsync(_.AppName, createRequest));
            });

            Assert.Equal(404, ex.StatusCode);


            // STEP 1: Assign contributor.
            var createInviteRequest = new AssignContributorDto {
                ContributorId = contributorEmail, Invite = true
            };

            var contributors_1 = await _.Apps.PostContributorAsync(_.AppName, createInviteRequest);

            var contributor_1 = contributors_1.Items.FirstOrDefault(x => x.ContributorName == contributorEmail);

            // Should return contributor with correct email.
            Assert.Equal(contributorRole1, contributor_1?.Role);


            // STEP 2: Update contributor role.
            var updateRequest = new AssignContributorDto {
                ContributorId = contributorEmail, Role = contributorRole2
            };

            var contributors_2 = await _.Apps.PostContributorAsync(_.AppName, updateRequest);

            var contributor_2 = contributors_2.Items.FirstOrDefault(x => x.ContributorId == contributor_1.ContributorId);

            // Should return contributor with correct role.
            Assert.Equal(contributorRole2, contributor_2?.Role);


            // STEP 3: Remove contributor.
            var contributors_3 = await _.Apps.DeleteContributorAsync(_.AppName, contributor_2.ContributorId);

            var contributor_3 = contributors_3.Items.FirstOrDefault(x => x.ContributorId == contributor_1.ContributorId);

            // Should not return deleted contributor.
            Assert.Null(contributor_3);
        }
        private async Task <ContributorDto> InviteAsync()
        {
            var createInviteRequest = new AssignContributorDto
            {
                ContributorId = email,
                Invite        = true
            };

            var contributors = await _.Apps.PostContributorAsync(appName, createInviteRequest);

            var contributor = contributors.Items.Find(x => x.ContributorName == email);

            return(contributor);
        }
        private async Task SynchronizeContributorsAsync(AppModel model, ISession session)
        {
            foreach (var(email, value) in model.Contributors)
            {
                await log.DoSafeAsync($"Contributor '{email}' creating", async() =>
                {
                    var request = new AssignContributorDto {
                        ContributorId = email, Role = value.Role, Invite = true
                    };

                    await session.Apps.PostContributorAsync(session.App, request);
                });
            }
        }
        public async Task Should_not_invite_contributor_if_flag_is_false()
        {
            // STEP 0: Create app.
            await CreateAppAsync();


            // STEP 1:  Do not invite contributors when flag is false.
            var createRequest = new AssignContributorDto {
                ContributorId = "*****@*****.**"
            };

            var ex = await Assert.ThrowsAsync <SquidexManagementException>(() =>
            {
                return(_.Apps.PostContributorAsync(appName, createRequest));
            });

            Assert.Equal(404, ex.StatusCode);
        }
        public async Task <IActionResult> PostContributor(string app, [FromBody] AssignContributorDto request)
        {
            var command = request.ToCommand();
            var context = await CommandBus.PublishAsync(command);

            var response = (ContributorAssignedDto)null;

            if (context.PlainResult is EntityCreatedResult <string> idOrValue)
            {
                response = ContributorAssignedDto.FromId(idOrValue.IdOrValue, false);
            }
            else if (context.PlainResult is InvitedResult invited)
            {
                response = ContributorAssignedDto.FromId(invited.Id.IdOrValue, true);
            }

            return(Ok(response));
        }
Example #10
0
        public async Task <IActionResult> PostContributor(string app, [FromBody] AssignContributorDto request)
        {
            var command = request.ToCommand();
            var context = await CommandBus.PublishAsync(command);

            var response = (ContributorsDto)null;

            if (context.PlainResult is IAppEntity newApp)
            {
                response = ContributorsDto.FromApp(newApp, appPlansProvider, this, false);
            }
            else if (context.PlainResult is InvitedResult invited)
            {
                response = ContributorsDto.FromApp(invited.App, appPlansProvider, this, true);
            }

            return(CreatedAtAction(nameof(GetContributors), new { app }, response));
        }
        public async Task Should_update_contributor()
        {
            // STEP 0: Create app.
            await CreateAppAsync();


            // STEP 1: Assign contributor.
            var contributor = await InviteAsync();


            // STEP 1: Update contributor role.
            var updateRequest = new AssignContributorDto
            {
                ContributorId = email, Role = "Owner"
            };

            var contributors_2 = await _.Apps.PostContributorAsync(appName, updateRequest);

            var contributor_2 = contributors_2.Items.Find(x => x.ContributorId == contributor.ContributorId);

            Assert.Equal(updateRequest.Role, contributor_2?.Role);
        }