public static void CreateUserAsync_UsernameNotAlreadyExists_CreatesUser(bool isAdmin, bool isGuest, bool canJukebox)
            {
                var dbConnection = OpenSqliteDatabase();

                var dbContextOptionsBuilder = new DbContextOptionsBuilder <MediaInfoContext>()
                                              .DisableClientSideEvaluation()
                                              .UseSqlite(dbConnection);

                using (var dbContext = new MediaInfoContext(dbContextOptionsBuilder.Options))
                {
                    const string username = "******";
                    const string password = "******";

                    int userId = RestApiQueries.CreateUserAsync(dbContext, username, password, isAdmin, isGuest, canJukebox, CancellationToken.None).GetAwaiter().GetResult();
                    var users  = dbContext.Users.Local.Where(u => u.UserId == userId).ToArray();
                    dbContext.SaveChanges();

                    var user = Assert.Single(users);
                    Assert.Equal(username, user.Name);
                    Assert.Equal(password, user.Password);
                    Assert.Equal(128_000, user.MaxBitRate);
                    Assert.Equal(isAdmin, user.IsAdmin);
                    Assert.Equal(isGuest, user.IsGuest);
                    Assert.Equal(canJukebox, user.CanJukebox);
                    Assert.Empty(dbContext.LibraryUsers.Where(lu => lu.UserId == user.UserId));
                    Assert.Empty(dbContext.Playlists.Where(p => p.UserId == user.UserId));
                }
            }
            public static void CreateUserAsync_UsernameAlreadyExists_ThrowsGenericError()
            {
                var dbConnection = OpenSqliteDatabase();

                var dbContextOptionsBuilder = new DbContextOptionsBuilder <MediaInfoContext>()
                                              .DisableClientSideEvaluation()
                                              .UseSqlite(dbConnection);

                using (var dbContext = new MediaInfoContext(dbContextOptionsBuilder.Options))
                {
                    var random = new RandomPopulator(dbContext);
                    var user   = random.AddUser();
                    dbContext.SaveChanges();

                    var ex = Assert.Throws <RestApiErrorException>(() =>
                    {
                        return(RestApiQueries.CreateUserAsync(dbContext, user.Name, "password", false, false, false, CancellationToken.None).GetAwaiter().GetResult());
                    });

                    var expectedException = RestApiErrorException.GenericError("User already exists.");
                    Assert.Equal(expectedException.Message, ex.Message);
                    Assert.Equal(expectedException.Code, ex.Code);
                }
            }