Example #1
0
        public static void ConfigureExceptionHandler(this IApplicationBuilder app)
        {
            app.UseExceptionHandler(error =>
            {
                error.Run(async context =>
                {
                    var exceptionHandlerFeature = context.Features.Get <IExceptionHandlerFeature>();
                    var exception = exceptionHandlerFeature.Error;

                    var statusCode = exception switch
                    {
                        ResourceNotFoundException _ => (int)HttpStatusCode.NotFound,
                        ModelFormatException _ => (int)HttpStatusCode.PreconditionFailed,
                        ResourceAlreadyExistsException _ => (int)HttpStatusCode.Conflict,
                        InvalidLoginException _ => (int)HttpStatusCode.Unauthorized,
                        UnauthorizedException _ => (int)HttpStatusCode.Unauthorized,
                        InvalidProductIdentifierException _ => (int)HttpStatusCode.PreconditionFailed,
                        _ => (int)HttpStatusCode.InternalServerError
                    };

                    context.Response.ContentType = "application/json";
                    context.Response.StatusCode  = statusCode;

                    await context.Response.WriteAsync(new ExceptionModel
                    {
                        StatusCode = statusCode,
                        Message    = exception.Message
                    }.ToString());
                });
            });
        }
 void GetSchemasForms(TB_USUARIO userInfo)
 {
     try
     {
         var visitas = GetRest("api/mobile/formularios/schemas", Cache.TYPE_FORM, userInfo, 3);
         var request = JsonConvert.DeserializeObject <RestFormSchemasModel>(visitas).result;
         model.db.InsertSchema(request);
     }
     catch (Exception x)
     {
         if (!(x is NotModifiedException || x is TaskCanceledException))
         {
             exceptionMessage = x.Message;
         }
         else if (x is InvalidLoginException)
         {
             exceptionMessage = x.Message;
             invalidException = (InvalidLoginException)x;
             throw x;
         }
         else if (x is NotModifiedException)
         {
             if (((NotModifiedException)x).typeofExeption == HttpStatusCode.NotFound)
             {
                 model.dbCache.UpdateCache(Cache.TYPE_FORM, null, userInfo.ID);
             }
         }
     }
 }
Example #3
0
        public void ShouldLoginUser()
        {
            var fixture      = new Fixture();
            var expectedUser = fixture.Create <User>();
            var testLogin    = new User {
                Username = "******", Password = "******"
            };
            var  expectedEx = new InvalidLoginException(testLogin.Username);
            User actualUser = null;

            var userRepoMock = new Mock <IUserRepository>();

            userRepoMock.Setup(m => m.LoginAsync(testLogin)).ReturnsAsync(expectedUser).Verifiable();

            var contextMock = new Mock <IContext>();

            contextMock.Setup(m => m.GetService <IUserRepository>()).Returns(userRepoMock.Object);
            contextMock.Setup(m => m.GetService <ILogger>()).Returns(new Mock <ILogger>().Object);
            contextMock.SetupSet(p => p.CurrentUser = It.IsAny <User>()).Callback <User>(v => actualUser = v);

            var model = new LoginViewModel(contextMock.Object);

            model.Login(testLogin).Wait();

            userRepoMock.Verify(m => m.LoginAsync(testLogin), Times.Once);
            Assert.Equal(expectedUser, actualUser);
        }
 /// <summary>
 /// Executa todos os processos do sincronizador ( Gets, Posts, Puts, envios de fotos e etc )
 /// </summary>
 public void ExecRestApis()
 {
     try
     {
         userInfos = model.db.SelectInfoDeUsuarios();
         if (userInfos != null)
         {
             if (token == null || token.Count < userInfos.Count)
             {
                 GetToken();
             }
             foreach (var userInfo in userInfos)
             {
                 //importante v1: Nao alterar as ordems, senao vai da merda.
                 SendPontoEletronico(userInfo);
                 SendVisitasJustificadas(userInfo);
                 SendForms(userInfo);
                 SendVisitaAtualizada(userInfo);
                 //importante v2: executar os gets somente apos os puts e posts.
                 GetVisitas(userInfo);
                 //importante v3: Quero pizza.
             }
             exceptionMessage = "";
             invalidException = null;
         }
     }
     catch (InvalidLoginException invalidLogin)
     {
         exceptionMessage = invalidLogin.Message;
         invalidException = invalidLogin;
         throw invalidLogin;
     }
     catch (AggregateException agr)
     {
         if (!(agr.InnerException is NotModifiedException || agr.InnerException is TaskCanceledException))
         {
             exceptionMessage = agr.InnerException.Message;
         }
         else if (agr.InnerException is InvalidLoginException)
         {
             exceptionMessage = agr.InnerException.Message;
             invalidException = (InvalidLoginException)agr.InnerException;
             throw agr;
         }
     }
     catch (Exception x)
     {
         if (!(x is NotModifiedException || x is TaskCanceledException))
         {
             exceptionMessage = x.Message;
         }
         else if (x is InvalidLoginException)
         {
             exceptionMessage = x.Message;
             invalidException = (InvalidLoginException)x;
             throw x;
         }
     }
 }
        void GetVisitas(TB_USUARIO userInfo)
        {
            var visitasIDs = new List <string>();

            if (model.db.HasVisitasInDate(DateTime.Now, userInfo.ID))
            {
                model.dbCache.UpdateCache(Cache.VISITAS_ATUALIZADAS, null, userInfo.ID);
            }
            try
            {
                var visitaCon = new PDVsRestCon();
                var visitas   = GetRest("api/mobile/funcionarios/" + userInfo.ID + "/visitas/" + DateTime.Now.ToString("yyyy-MM-dd"),
                                        Cache.VISITAS_ATUALIZADAS, userInfo, 3);
                GetProdutos(userInfo);
                GetSchemasForms(userInfo);
                var request = JsonConvert.DeserializeObject <PDVsRestModel>(visitas).result;
                foreach (PdvRestModel item in request)
                {
                    if (item.formularios.Count > 0)
                    {
                        visitasIDs.Add(item.id);
                        var isNewPDV = model.db.InsertVisitas(item.id,
                                                              DateTime.Now,
                                                              visitaCon.GetGEO_PT(item),
                                                              item.lat, item.lng,
                                                              item.formularios,
                                                              userInfo.ID);
                        if (isNewPDV)
                        {
                            idsPdvsNovos.Add(visitaCon.GetGEO_PT(item));
                        }
                    }
                }
            }
            catch (Exception x)
            {
                if (!(x is NotModifiedException || x is TaskCanceledException))
                {
                    exceptionMessage = x.Message;
                }
                else if (x is InvalidLoginException)
                {
                    exceptionMessage = x.Message;
                    invalidException = (InvalidLoginException)x;
                    throw x;
                }
            }
            model.db.ConluirVisitasNotInService(visitasIDs, userInfo.ID);
        }
Example #6
0
        public void ShouldHandleInvalidLogin()
        {
            var testLogin = new User {
                Username = "******", Password = "******"
            };
            var expectedEx   = new InvalidLoginException(testLogin.Username);
            var userRepoMock = new Mock <IUserRepository>();

            userRepoMock.Setup(m => m.LoginAsync(testLogin)).ThrowsAsync(expectedEx);

            var contextMock = new Mock <IContext>();

            contextMock.Setup(m => m.GetService <IUserRepository>()).Returns(userRepoMock.Object);
            contextMock.Setup(m => m.GetService <ILogger>()).Returns(new Mock <ILogger>().Object);

            var model = new LoginViewModel(contextMock.Object);

            var ex = Assert.ThrowsAsync <PublicException>(() => model.Login(testLogin)).Result;

            Assert.Equal("invalid-login", ex.Id);
        }