private static HttpPilotClient Reconnect(HttpContext context, IServerCallback callback)
        {
            var client = new HttpPilotClient();

            client.Connect(ApplicationConst.PilotServerUrl);

            var serverApi = client.GetServerApi(callback);

            var dbName            = context.User.FindFirstValue(ClaimTypes.Surname);
            var login             = context.User.FindFirstValue(ClaimTypes.Name);
            var protectedPassword = context.User.FindFirstValue(ClaimTypes.UserData);
            var useWindowsAuth    = login.Contains("/") || login.Contains("\\");
            var dbInfo            = serverApi.OpenDatabase(dbName, login, protectedPassword, useWindowsAuth);

            if (dbInfo == null)
            {
                throw new TransportException();
            }

            var clientIdString = context.User.FindFirstValue(ClaimTypes.Sid);

            ClientsDictionary[Guid.Parse(clientIdString)] = client;

            DMetadata dMetadata = serverApi.GetMetadata(dbInfo.MetadataVersion);

            context.Session.SetSessionValues(SessionKeys.MetaTypes, dMetadata.Types.ToDictionary(x => x.Id, y => y));

            return(client);
        }
Ejemplo n.º 2
0
        public void should_get_empty_list_objects()
        {
            // given
            var api = new Mock <IServerApi>();

            Setup(api);
            var meta = new DMetadata();

            meta.Types.Add(TestTools.RandomMType(23));
            api.Setup(a => a.GetMetadata(0)).Returns(meta);
            var dbInfo        = new DDatabaseInfo();
            var searchFactory = new Mock <ISearchServiceFactory>();
            var backend       = new Mock <IBackend>();
            var service       = new ServerApiService(api.Object, dbInfo, searchFactory.Object, backend.Object);

            // when
            var actual = service.GetObjects(new Guid[0]);

            // then
            Assert.AreEqual(0, actual.Count());

            // when
            var actual2 = service.GetObjects(null);

            // then
            Assert.AreEqual(0, actual2.Count());
        }
Ejemplo n.º 3
0
        public static PObject RandomPObject(Guid id)
        {
            var metadata = new DMetadata();

            metadata.Types.Add(new MType());
            var people = new ReadOnlyDictionary <int, INPerson>(new Dictionary <int, INPerson>());

            return(new PObject(new DObject(), metadata, people));
        }
Ejemplo n.º 4
0
        public void should_get_object_children_with_source_files_folder()
        {
            // given
            var api = new Mock <IServerApi>();

            Setup(api);
            var meta       = new DMetadata();
            var parentType = TestTools.RandomMType(15);

            meta.Types.Add(TestTools.RandomMType(23));
            meta.Types.Add(parentType);
            api.Setup(a => a.GetMetadata(0)).Returns(meta);

            var parentId = Guid.NewGuid();
            var parent   = TestTools.RandomDObject(parentId);
            var childId1 = Guid.NewGuid();
            var childId2 = Guid.NewGuid();

            parent.TypeId = 15;
            parent.Children.Add(new DChild {
                ObjectId = childId1, TypeId = 23
            });
            parent.Children.Add(new DChild {
                ObjectId = childId2, TypeId = 23
            });

            var dbInfo        = new DDatabaseInfo();
            var searchFactory = new Mock <ISearchServiceFactory>();
            var backend       = new Mock <IBackend>();
            var service       = new ServerApiService(api.Object, dbInfo, searchFactory.Object, backend.Object);

            api.Setup(a => a.GetObjects(new[] { parentId })).Returns(new List <DObject> {
                parent
            });

            var children = new List <DObject>()
            {
                TestTools.RandomDObject(childId1, 23),
                TestTools.RandomDObject(childId2, 23)
            };

            api.Setup(a => a.GetObjects(new[] { childId1, childId2 })).Returns(children);

            // when
            parentType.IsMountable = true;
            var actual = service.GetObjectChildren(parentId, ChildrenType.ListView).ToArray();

            // then
            Assert.AreEqual(3, actual.Length);
            Assert.AreEqual(parentId, actual[0].Id);
            Assert.AreEqual(childId1, actual[1].Id);
            Assert.AreEqual(childId2, actual[2].Id);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> LogIn(LogInViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("LogIn"));
            }

            var client = HttpContext.GetClient() ?? new HttpPilotClient();

            var serverUrl = ApplicationConst.PilotServerUrl;

            try
            {
                client.Connect(serverUrl);
            }
            catch (Exception ex)
            {
                _logger.LogError(1, "Не удалось подключиться к серверу", ex);
                ModelState.AddModelError("", "Сервер недоступен.");
                return(View());
            }

            var serviceCallbackProxy = CallbackFactory.Get <IServerCallback>();
            var serverApi            = client.GetServerApi(serviceCallbackProxy);

            var protectedPassword = model.Password.EncryptAes();
            var useWindowsAuth    = model.Login.Contains('\\') || model.Login.Contains('/');
            var dbInfo            = serverApi.OpenDatabase(model.DatabaseName, model.Login, protectedPassword, useWindowsAuth);

            if (dbInfo == null)
            {
                ModelState.AddModelError("", "Авторизация не удалась, проверьте данные и повторите вход");
                return(View("LogIn", model));
            }
            var sid = Guid.NewGuid();

            await SignInAsync(dbInfo, model.DatabaseName, protectedPassword, sid, model.RememberMe);

            HttpContext.SetClient(client, sid);
            DMetadata dMetadata = serverApi.GetMetadata(dbInfo.MetadataVersion);

            //DMetadata dMetadata = serverApi.GetMetadata(0);
            Debug.WriteLine(dMetadata.Types.ToString());
            Debug.WriteLine(dMetadata.Version.ToString());
            HttpContext.Session.SetSessionValues(SessionKeys.MetaTypes, dMetadata.Types.ToDictionary(x => x.Id, y => y));

            return(RedirectToAction("Index", "Files"));
        }
Ejemplo n.º 6
0
        public void should_get_object_parents_with_source_folder()
        {
            // given
            var api = new Mock <IServerApi>();

            Setup(api);
            var meta        = new DMetadata();
            var projectType = TestTools.RandomMType(24);

            projectType.IsMountable = true;
            meta.Types.Add(projectType);
            meta.Types.Add(TestTools.RandomMType(23));
            api.Setup(a => a.GetMetadata(0)).Returns(meta);
            var dbInfo        = new DDatabaseInfo();
            var searchFactory = new Mock <ISearchServiceFactory>();
            var backend       = new Mock <IBackend>();
            var service       = new ServerApiService(api.Object, dbInfo, searchFactory.Object, backend.Object);

            var objectId = Guid.NewGuid();
            var obj      = TestTools.RandomDObject(objectId, 23);

            api.Setup(a => a.GetObjects(new[] { objectId })).Returns(new List <DObject> {
                obj
            });

            var parent1 = TestTools.RandomDObject(Guid.NewGuid(), 23);
            var parent2 = TestTools.RandomDObject(Guid.NewGuid(), 24);

            parent2.ParentId = parent1.Id;
            obj.ParentId     = parent2.Id;

            api.Setup(a => a.GetObjects(new[] { parent1.Id })).Returns(new List <DObject> {
                parent1
            });
            api.Setup(a => a.GetObjects(new[] { parent2.Id })).Returns(new List <DObject> {
                parent2
            });

            // when
            var actual = service.GetObjectParents(objectId).ToArray();

            // then
            Assert.AreEqual(3, actual.Length);
            Assert.AreEqual(parent2.Id, actual[0].Id);
            Assert.AreEqual(parent2.Id, actual[1].Id);
            Assert.AreEqual(obj.Id, actual[2].Id);
        }
Ejemplo n.º 7
0
        public void should_get_metadata()
        {
            // given
            var api = new Mock <IServerApi>();

            Setup(api);
            var meta = new DMetadata();

            api.Setup(a => a.GetMetadata(0)).Returns(meta);
            var dbInfo        = new DDatabaseInfo();
            var searchFactory = new Mock <ISearchServiceFactory>();
            var backend       = new Mock <IBackend>();
            var service       = new ServerApiService(api.Object, dbInfo, searchFactory.Object, backend.Object);

            // when
            var actual = service.GetMetadata();

            // then
            Assert.AreEqual(meta, actual);
        }
Ejemplo n.º 8
0
        public void should_get_objects()
        {
            // given
            var api = new Mock <IServerApi>();

            Setup(api);
            var meta = new DMetadata();

            meta.Types.Add(TestTools.RandomMType(23));
            api.Setup(a => a.GetMetadata(0)).Returns(meta);
            var dbInfo        = new DDatabaseInfo();
            var searchFactory = new Mock <ISearchServiceFactory>();
            var backend       = new Mock <IBackend>();
            var service       = new ServerApiService(api.Object, dbInfo, searchFactory.Object, backend.Object);

            var guids = new[]
            {
                Guid.Parse("81C28B67-B8EA-4BA6-9595-40707B47DA8B"),
                Guid.Parse("D029F4C6-4C84-42D5-8C31-A23ECEFCB116")
            };
            var children = new List <DObject>()
            {
                TestTools.RandomDObject(guids[0], 23),
                TestTools.RandomDObject(guids[1], 23)
            };

            api.Setup(a => a.GetObjects(new[] { guids[0], guids[1] })).Returns(children);

            // when
            var actual = service.GetObjects(guids).ToArray();

            // then
            Assert.AreEqual(2, actual.Length);
            Assert.AreEqual(guids[0], actual[0].Id);
            Assert.AreEqual(guids[1], actual[1].Id);
        }
Ejemplo n.º 9
0
        public void should_throw_exception_if_parent_not_found()
        {
            // given
            var api = new Mock <IServerApi>();

            Setup(api);
            var meta       = new DMetadata();
            var parentType = TestTools.RandomMType(15);

            meta.Types.Add(TestTools.RandomMType(23));
            meta.Types.Add(parentType);
            api.Setup(a => a.GetMetadata(0)).Returns(meta);

            var parentId      = Guid.NewGuid();
            var dbInfo        = new DDatabaseInfo();
            var searchFactory = new Mock <ISearchServiceFactory>();
            var backend       = new Mock <IBackend>();
            var service       = new ServerApiService(api.Object, dbInfo, searchFactory.Object, backend.Object);

            api.Setup(a => a.GetObjects(new[] { parentId })).Returns(new List <DObject>());

            // when
            Assert.Throws <Exception>(() => service.GetObjectChildren(parentId, ChildrenType.ListView));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Получить список машин состояний
        /// </summary>
        public List <MUserStateMachine> GetStateMachines()
        {
            DMetadata metadata = _serverApi.GetMetadata(0);

            return(metadata.StateMachines);
        }