internal async Task Delete_InValidAsync(Category category)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    var response =
                        (
                            await api.DeleteCategoryAsync(category) as JsonResult
                        ).Value as ExecutionResult <bool>;

                    Assert.False(response.Data);
                    Assert.NotNull(response.Error);
                    Assert.False(response.IsSucceed);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task UpdatePasswordAsync_ValidAsync()
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var auth     = Storage.CreateGatewayController(context);
                    var identity =
                        (
                            await auth.LoginAsync(new Credentials {
                        Login = "******", Password = "******"
                    }) as JsonResult
                        ).Value as ExecutionResult <Identity>;
                    GenericChecks.CheckSucceed(identity);



                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    identity.Data.Account.Password = "******";

                    var updated =
                        (
                            await api.SaveAccountAsync(identity.Data.Account) as JsonResult
                        ).Value as ExecutionResult <Account>;
                    GenericChecks.CheckSucceed(updated);


                    var responseGet =
                        (
                            await api.GetAccountAsync(identity.Data.Account.Id.Value) as JsonResult
                        ).Value as ExecutionResult <Account>;
                    GenericChecks.CheckSucceed(responseGet);

                    Compare(responseGet.Data, identity.Data.Account, 1);

                    var newIdentity =
                        (
                            await auth.LoginAsync
                            (
                                new Credentials {
                        Login = "******", Password = identity.Data.Account.Password
                    }
                            ) as JsonResult
                        ).Value as ExecutionResult <Identity>;
                    GenericChecks.CheckSucceed(identity);

                    Compare(newIdentity.Data.Account, identity.Data.Account, 1);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task DeleteAccountAsync_ValidAsync(string sql, Account account)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    Storage.RunSql(sql);

                    var delResult =
                        (
                            await api.DeleteAccountAsync(account) as JsonResult
                        ).Value as ExecutionResult <bool>;
                    GenericChecks.CheckSucceed(delResult);


                    var responseGet =
                        (
                            await api.GetAccountAsync(account.Id.Value) as JsonResult
                        ).Value as ExecutionResult <Account>;
                    GenericChecks.CheckFail(responseGet);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task GetAccountsAsyncPaging_ValidAsync(string sql, Paging paging, Account[] expected)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    Storage.RunSql(sql);

                    var response =
                        (
                            await api.GetAccountsAsync(paging) as JsonResult
                        ).Value as ExecutionResult <Account[]>;
                    GenericChecks.CheckSucceed(response);

                    foreach (var item in expected)
                    {
                        var actual = response.Data.FirstOrDefault(x => x.Id == item.Id);

                        Compare(actual, item);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task GetAccountAsync_InValidAsync(string sql, int id)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    Storage.RunSql(sql);

                    var getResult =
                        (
                            await api.GetAccountAsync(id) as JsonResult
                        ).Value as ExecutionResult <Account>;
                    GenericChecks.CheckFail(getResult);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task CountAsync_ValidAsync(string[] sql)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    Storage.RunSql(sql);

                    var response =
                        (
                            await api.CountAccountAsync() as JsonResult
                        ).Value as ExecutionResult <int>;
                    GenericChecks.CheckSucceed(response);

                    Assert.Equal(sql.Length + 1, response.Data);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task AddAccountAsync_InValidAsync(Account account)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    var addResult =
                        (
                            await api.SaveAccountAsync(account) as JsonResult
                        ).Value as ExecutionResult <Account>;
                    GenericChecks.CheckFail(addResult);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task GetRolesAsync_ValidAsync(string[] expectedRoles)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    var response =
                        (
                            api.GetRoles() as JsonResult
                        ).Value as ExecutionResult <List <string> >;

                    GenericChecks.CheckSucceed(response);

                    Assert.Equal(expectedRoles.Length, response.Data.Count);

                    foreach (var item in expectedRoles)
                    {
                        var actural = response.Data.First(x => x == item);
                        Assert.Equal(item, actural);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal void GetInformation_BadToken(string token)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = ControllerContextCreator.CreateInvalid(token);

                    var response =
                        (
                            api.GetInformationAsync() as JsonResult
                        ).Value as ExecutionResult <Information>;

                    GenericChecks.CheckFail(response);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task UpdateIntroduction_InvalidAsync(Introduction update)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    var updateResponse =
                        (
                            await api.SaveIntroductionAsync(update) as JsonResult
                        ).Value as ExecutionResult <Introduction>;

                    GenericChecks.CheckFail(updateResponse);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
Пример #11
0
        public virtual UrlHelper UrlInit()
        {
            var controllerContext = ControllerContextCreator.Create(new FakeController());
            var CC  = controllerContext.RequestContext;
            var Url = new System.Web.Mvc.UrlHelper(CC);

            return(Url);
        }
        internal async Task Save_ValidAsync(Category update, Category expected)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    var apiPublic = Storage.CreatePublicController(context);

                    var response =
                        (
                            await api.SaveCategoryAsync(update) as JsonResult
                        ).Value as ExecutionResult <Category>;

                    Assert.NotNull(response.Data);
                    Assert.Null(response.Error);
                    Assert.True(response.IsSucceed);
                    Compare(expected, response.Data);


                    var getResponse =
                        (
                            await apiPublic.GetCategoryAsync(update.Id.Value) as JsonResult
                        ).Value as ExecutionResult <Category>;

                    Assert.NotNull(getResponse.Data);
                    Assert.Null(getResponse.Error);
                    Assert.True(getResponse.IsSucceed);
                    Compare(expected, getResponse.Data);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task UpdateAcountAsync_InValidAsync(Account account)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var auth     = Storage.CreateGatewayController(context);
                    var identity =
                        (
                            await auth.LoginAsync(new Credentials {
                        Login = "******", Password = "******"
                    }) as JsonResult
                        ).Value as ExecutionResult <Identity>;
                    GenericChecks.CheckSucceed(identity);

                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    identity.Data.Account.Login = "******";

                    Storage.RunSql("INSERT INTO account (id, login, password, salt, role) VALUES (2, 'login', 'password', 'salt', 'role'); ");


                    var response =
                        (
                            await api.SaveAccountAsync(account) as JsonResult
                        ).Value as ExecutionResult <Account>;
                    GenericChecks.CheckFail(response);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task UpdateIntroduction_ValidAsync(Introduction update, Introduction expected)
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator.CreateValid(context, null);

                    var updateResponse =
                        (
                            await api.SaveIntroductionAsync(update) as JsonResult
                        ).Value as ExecutionResult <Introduction>;

                    GenericChecks.CheckSucceed(updateResponse);
                    Compare(updateResponse.Data, expected);
                    Assert.Equal(expected.PosterUrl, updateResponse.Data.PosterUrl);


                    var apiPublic   = Storage.CreatePublicController(context);
                    var getResponse =
                        (
                            await apiPublic.GetIntroductionAsync() as JsonResult
                        ).Value as ExecutionResult <Introduction>;

                    GenericChecks.CheckSucceed(getResponse);
                    Compare(getResponse.Data, expected);
                    Assert.Equal(expected.PosterUrl, getResponse.Data.PosterUrl);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }
        internal async Task UpdateIntroduction_AddFile_ValidAsync()
        {
            using (var context = Storage.CreateContext())
            {
                try
                {
                    var update = new Introduction
                    {
                        Content           = "The service is on-line. Congratulations.",
                        Title             = "Hello",
                        PosterDescription = "des",
                        PosterUrl         = @"Files/untitled.png",
                        Version           = 0
                    };

                    var stream       = File.OpenRead(update.PosterUrl);
                    var ffcollection = new FormFileCollection
                    {
                        new FormFile(stream, 0, stream.Length, "introduction[posterToUpload]", "untitled.png")
                    };

                    var api = Storage.CreatePrivateController(context);
                    api.ControllerContext = await ControllerContextCreator
                                            .CreateValid(context, ffcollection);


                    var updateResponse =
                        (
                            await api.SaveIntroductionAsync(update) as JsonResult
                        ).Value as ExecutionResult <Introduction>;

                    GenericChecks.CheckSucceed(updateResponse);

                    Assert.NotNull(updateResponse.Data.PosterUrl);

                    var config    = Storage.CreateConfiguration();
                    var pathStart = config["Endpoint"] + config["Location:StaticFilesRequestPath"];

                    Assert.StartsWith(pathStart, updateResponse.Data.PosterUrl);

                    var storagePath = config.GetSection("Location:FileStorage").Get <string>();
                    var fileExists  = File.Exists(Path.Combine(storagePath, Path.GetFileName(updateResponse.Data.PosterUrl)));
                    Assert.True(fileExists);

                    var apiPublic   = Storage.CreatePublicController(context);
                    var getResponse =
                        (
                            await apiPublic.GetIntroductionAsync() as JsonResult
                        ).Value as ExecutionResult <Introduction>;

                    GenericChecks.CheckSucceed(getResponse);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    context.FlushData();
                }
            }
        }