public async Task DeleteVideoPlaylistTest()
        {
            var authorizedHttpClient = await base.SignIn(Role.User);

            var dbContext = TestsBase.CreateDbContext();
            VideoPlaylistModel         testVideoPlaylist          = CreateTestVideoPlaylist();
            VideoPlaylistClientService videoPlaylistClientService = base.CreateVideoPlaylistClientService();
            await videoPlaylistClientService.CreateVideoPlaylistAsync(testVideoPlaylist);

            var entity = await dbContext.VideoPlaylist
                         .Include(p => p.OwnerApplicationUser)
                         .Where(p => p.PlaylistName == testVideoPlaylist.PlaylistName &&
                                p.OwnerApplicationUser.AzureAdB2cobjectId.ToString() == TestsBase.TestAzureAdB2CAuthConfiguration !.AzureAdUserObjectId)
                         .AsNoTracking().SingleOrDefaultAsync();

            Assert.IsNotNull(entity);
            await videoPlaylistClientService.DeleteVideoPlaylistAsync(entity !.VideoPlaylistId);

            entity = await dbContext.VideoPlaylist
                     .Include(p => p.OwnerApplicationUser)
                     .Where(p => p.PlaylistName == testVideoPlaylist.PlaylistName &&
                            p.OwnerApplicationUser.AzureAdB2cobjectId.ToString() == TestsBase.TestAzureAdB2CAuthConfiguration !.AzureAdUserObjectId)
                     .AsNoTracking().SingleOrDefaultAsync();

            Assert.IsNull(entity);
        }
        public async Task CreateVideoPlaylistAsync(VideoPlaylistModel videoPlaylistModel)
        {
            var authorizedHttpClient = this.HttpClientService.CreateAuthorizedClient();
            var response             = await authorizedHttpClient.PostAsJsonAsync(ApiRoutes.VideoPlaylistController.CreateVideoPlaylist,
                                                                                  videoPlaylistModel);

            if (!response.IsSuccessStatusCode)
            {
                ProblemHttpResponse problemHttpResponse = await response.Content.ReadFromJsonAsync <ProblemHttpResponse>();

                if (problemHttpResponse != null)
                {
                    throw new CustomValidationException(problemHttpResponse.Detail);
                }
                else
                {
                    throw new CustomValidationException(response.ReasonPhrase);
                }
            }
        }
Beispiel #3
0
        public async Task CreateVideoPlaylisyAsync(VideoPlaylistModel videoPlaylistModel, CancellationToken cancellationToken)
        {
            var userObjectId = this.CurrentUserProvider.GetObjectId();
            var isDuplicated = await this.FairplaytubeDatabaseContext.VideoPlaylist.Include(p => p.OwnerApplicationUser)
                               .AnyAsync(p => p.OwnerApplicationUser.AzureAdB2cobjectId.ToString() == userObjectId &&
                                         p.PlaylistName == videoPlaylistModel.PlaylistName, cancellationToken: cancellationToken);

            if (isDuplicated)
            {
                throw new CustomValidationException($"User already has a playlist named '{videoPlaylistModel.PlaylistName}'");
            }
            var userEntity = await this.FairplaytubeDatabaseContext.ApplicationUser.Where(p => p.AzureAdB2cobjectId.ToString() ==
                                                                                          userObjectId).SingleAsync(cancellationToken: cancellationToken);

            await this.FairplaytubeDatabaseContext.VideoPlaylist.AddAsync(new DataAccess.Models.VideoPlaylist()
            {
                PlaylistName           = videoPlaylistModel.PlaylistName,
                PlaylistDescription    = videoPlaylistModel.PlaylistDescription,
                OwnerApplicationUserId = userEntity.ApplicationUserId
            }, cancellationToken : cancellationToken);

            await this.FairplaytubeDatabaseContext.SaveChangesAsync(cancellationToken : cancellationToken);
        }
        public async Task <IActionResult> CreateVideoPlaylist(VideoPlaylistModel videoPlaylistModel, CancellationToken cancellationToken)
        {
            await this.VideoPlaylistService.CreateVideoPlaylisyAsync(videoPlaylistModel, cancellationToken);

            return(Ok());
        }