Esempio n. 1
0
        public async Task Put_ValidRepositorySettings_ShouldUpdate()
        {
            var org = "ttd";
            var sourceRepository = "xyz-datamodels";
            var developer        = "testUser";
            var targetRepository = $"{Guid.NewGuid()}-datamodels";
            await TestDataHelper.CopyRepositoryForTest(org, sourceRepository, developer, targetRepository);

            var                httpClient         = GetTestClient();
            string             requestUrl         = $"/designer/api/v1/{org}/{targetRepository}/repositorysettings";
            var                requestBody        = @"{""repoType"": ""Datamodels"", ""datamodelling.preference"": ""JsonSchema""}";
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Put, requestUrl)
            {
                Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
            };
            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(httpClient, httpRequestMessage);

            try
            {
                HttpResponseMessage response = await httpClient.SendAsync(httpRequestMessage);

                var altinnStudioSettings = await response.Content.ReadAsAsync <AltinnStudioSettings>();

                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                Assert.Equal(DatamodellingPreference.JsonSchema, altinnStudioSettings.DatamodellingPreference);
                Assert.Equal(AltinnRepositoryType.Datamodels, altinnStudioSettings.RepoType);
            }
            finally
            {
                TestDataHelper.DeleteAppRepository(org, targetRepository, developer);
            }
        }
Esempio n. 2
0
        public async Task Contents_ContentsReturned_OK()
        {
            // Arrange
            string uri = $"{_versionPrefix}/repositories/ttd/apps-test/contents";

            Mock <IRepository> repositoryService = new Mock <IRepository>();

            repositoryService
            .Setup(r => r.GetContents(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(new List <FileSystemObject>
            {
                new FileSystemObject
                {
                    Name     = "appsettings.Development.json",
                    Encoding = "Unicode (UTF-8)",
                    Path     = "App/appsettings.Development.json",
                    Type     = "File"
                }
            });

            HttpClient         client             = GetTestClient(repositoryService.Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri)
            {
            };
            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            // Assert
            Assert.Equal(HttpStatusCode.OK, res.StatusCode);
        }
        public async Task GetDeployments_NoLaggingDeployments_PipelineServiceNotCalled()
        {
            // Arrange
            string uri = $"{_versionPrefix}/ttd/issue-6094/deployments?sortBy=created&sortDirection=Descending";
            List <DeploymentEntity> completedDeployments = GetDeploymentsList("completedDeployments.json");

            Mock <IPipelineService>   pipelineService   = new Mock <IPipelineService>();
            Mock <IDeploymentService> deploymentService = new Mock <IDeploymentService>();

            deploymentService
            .Setup(rs => rs.GetAsync(It.IsAny <DocumentQueryModel>()))
            .ReturnsAsync(new SearchResults <DeploymentEntity> {
                Results = completedDeployments
            });

            HttpClient         client             = GetTestClient(deploymentService.Object, pipelineService.Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            string responseString = await res.Content.ReadAsStringAsync();

            SearchResults <DeploymentEntity> searchResult = JsonSerializer.Deserialize <SearchResults <DeploymentEntity> >(responseString, _options);
            IEnumerable <DeploymentEntity>   actual       = searchResult.Results;

            // Assert
            Assert.Equal(HttpStatusCode.OK, res.StatusCode);
            Assert.Equal(8, actual.Count());
            Assert.DoesNotContain(actual, r => r.Build.Status == Altinn.Studio.Designer.TypedHttpClients.AzureDevOps.Enums.BuildStatus.InProgress);
            pipelineService.Verify(p => p.UpdateDeploymentStatus(It.IsAny <string>(), It.IsAny <string>()), Times.Never);
            deploymentService.Verify(r => r.GetAsync(It.IsAny <DocumentQueryModel>()), Times.Once);
        }
Esempio n. 4
0
        public async Task PutDatamodel_ValidInput_ShouldUpdateFile(string modelPath)
        {
            var org = "ttd";
            var sourceRepository = "hvem-er-hvem";
            var developer        = "testUser";
            var targetRepository = Guid.NewGuid().ToString();

            await TestDataHelper.CopyRepositoryForTest(org, sourceRepository, developer, targetRepository);

            var    client = GetTestClient();
            var    url    = $"{_versionPrefix}/{org}/{targetRepository}/Datamodels/?modelPath={modelPath}";
            var    minimumValidJsonSchema = @"{""properties"":{""root"":{""$ref"":""#/definitions/rootType""}},""definitions"":{""rootType"":{""properties"":{""keyword"":{""type"":""string""}}}}}";
            string requestBody            = minimumValidJsonSchema;
            var    httpRequestMessage     = new HttpRequestMessage(HttpMethod.Put, url)
            {
                Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
            };
            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            try
            {
                var response = await client.SendAsync(httpRequestMessage);

                Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
            }
            finally
            {
                TestDataHelper.DeleteAppRepository(org, targetRepository, developer);
            }
        }
Esempio n. 5
0
        public async Task CopyApp_RepoHasCreatedStatus_DeleteRepositoryIsNotCalled()
        {
            // Arrange
            string uri = $"/designer/api/v1/repos/copyapp?org=ttd&sourceRepository=apps-test&targetRepository=cloned-app";

            Mock <IRepository> repositoryService = new Mock <IRepository>();

            repositoryService
            .Setup(r => r.CopyRepository(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(new Repository {
                RepositoryCreatedStatus = HttpStatusCode.Created, CloneUrl = "https://www.vg.no"
            });

            HttpClient         client             = GetTestClient(repositoryService.Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            // Assert
            repositoryService.VerifyAll();
            Assert.Equal(HttpStatusCode.Created, res.StatusCode);
        }
Esempio n. 6
0
        public async Task CopyApp_ExceptionIsThrownByService_InternalServerError()
        {
            // Arrange
            string uri = $"/designer/api/v1/repos/copyapp?org=ttd&sourceRepository=apps-test&targetRepository=cloned-app";

            Mock <IRepository> repositoryService = new Mock <IRepository>();

            repositoryService
            .Setup(r => r.CopyRepository(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Throws(new IOException());

            repositoryService
            .Setup(r => r.DeleteRepository(It.IsAny <string>(), It.IsAny <string>()));

            HttpClient         client             = GetTestClient(repositoryService.Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            // Assert
            repositoryService.VerifyAll();
            Assert.Equal(HttpStatusCode.InternalServerError, res.StatusCode);
        }
Esempio n. 7
0
        public async Task CreateApp_ValidRepoName_Created()
        {
            // Arrange
            string uri = $"/designer/api/v1/repos/CreateApp?org=ttd&repository=test";

            Mock <IRepository> repositoryService = new Mock <IRepository>();

            repositoryService
            .Setup(r => r.CreateService(It.IsAny <string>(), It.IsAny <ServiceConfiguration>()))
            .ReturnsAsync(new Repository()
            {
                RepositoryCreatedStatus = HttpStatusCode.Created, CloneUrl = "https://some.site/this/is/not/relevant"
            });

            HttpClient         client             = GetTestClient(repositoryService.Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            // Assert
            Assert.Equal(HttpStatusCode.Created, res.StatusCode);
        }
Esempio n. 8
0
        public static void ProcessRequest()
        {
            try
            {
                // 获取在线用户记录器
                OnlineUserRecorder recorder = HttpContext.Current.Cache[SessionConst.OnlineUserRecorderCacheKey] as OnlineUserRecorder;

                if (recorder == null)
                {
                    Register();
                    recorder = HttpContext.Current.Cache[SessionConst.OnlineUserRecorderCacheKey] as OnlineUserRecorder;
                }

                OnlineUser onlineUser = new OnlineUser();

                //注意session的名称是和登录保存的名称一致
                Data.Entities.User user = (Data.Entities.User)HttpContext.Current.Session[SessionConst.LoginUser];

                //用于限制用户只能在一处登录
                onlineUser.AuthenticationId = AuthenticationUtil.GetLoginUserGuid();

                onlineUser.UniqueID = user.UserId;
                //父级UserName
                onlineUser.ParentUserId = user.ParentUserId;
                //祖父级UserName
                //if (user.ParentUserId.HasValue)
                //{
                //    onlineUser.GrandUserId = new UserService().GetParentUserId(user.ParentUserId.Value);
                //}

                // 用户名称
                onlineUser.UserName = user.UserName;
                // 用户头像
                onlineUser.Avatar = user.Avatar;
                // 用户角色
                //onlineUser.UserDegree = user.UserRoles.First().RoleId;
                // SessionID
                onlineUser.SessionID = HttpContext.Current.Session.SessionID;
                // IP 地址
                //onlineUser.ClientIP = IPUtil.GetHostAddress();
                // 登录时间
                if (!onlineUser.LoginTime.HasValue)
                {
                    onlineUser.LoginTime = DateTime.Now;
                }
                // 最后活动时间
                onlineUser.ActiveTime = DateTime.Now;
                // 最后请求地址
                onlineUser.RequestURL = HttpContext.Current.Request.RawUrl;

                // 保存用户信息
                recorder.Persist(onlineUser);
            }
            catch (Exception ex)
            {
                _logger.Info(ex);
            }
        }
Esempio n. 9
0
        public async Task PostDatamodel_FromFormPost_ShouldReturnCreatedFromTemplate(string relativeDirectory, bool altinn2Compatible, string sourceRepository)
        {
            // Arrange
            var org              = "ttd";
            var developer        = "testUser";
            var targetRepository = Guid.NewGuid().ToString();

            await TestDataHelper.CopyRepositoryForTest(org, sourceRepository, developer, targetRepository);

            var client = GetTestClient();
            var url    = $"{_versionPrefix}/{org}/{targetRepository}/Datamodels/Post";

            var createViewModel = new CreateModelViewModel()
            {
                ModelName = "test", RelativeDirectory = relativeDirectory, Altinn2Compatible = altinn2Compatible
            };
            var postRequestMessage = new HttpRequestMessage(HttpMethod.Post, url)
            {
                Content = JsonContent.Create(createViewModel, null, new System.Text.Json.JsonSerializerOptions()
                {
                    PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase
                })
            };

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, postRequestMessage);

            // Act / Assert
            try
            {
                var postResponse = await client.SendAsync(postRequestMessage);

                Assert.Equal(HttpStatusCode.Created, postResponse.StatusCode);

                Assert.Equal("application/json", postResponse.Content.Headers.ContentType.MediaType);

                var postContent = await postResponse.Content.ReadAsStringAsync();

                Json.Schema.JsonSchema postJsonSchema = Json.Schema.JsonSchema.FromText(postContent);
                Assert.NotNull(postJsonSchema);

                // Try to read back the created schema to verify it's stored
                // at the location provided in the post response
                var location          = postResponse.Headers.Location;
                var getRequestMessage = new HttpRequestMessage(HttpMethod.Get, location);
                var getResponse       = await client.SendAsync(getRequestMessage);

                var getContent = await getResponse.Content.ReadAsStringAsync();

                var getJsonSchema = Json.Schema.JsonSchema.FromText(getContent);
                Assert.NotNull(getJsonSchema);
                Assert.Equal(postContent, getContent);
            }
            finally
            {
                TestDataHelper.DeleteAppRepository(org, targetRepository, developer);
            }
        }
Esempio n. 10
0
        public async Task DeleteUserStarredRepositories_ShouldReturnNoContent()
        {
            var client = GetTestClient();

            string             requestUrl         = "/designer/api/v1/user/starred/tdd/reponametounstar";
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Delete, requestUrl);
            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            response.StatusCode.Should().Be(HttpStatusCode.NoContent);
        }
Esempio n. 11
0
        public static void Clear()
        {
            if (LoginUser != null)
            {
                var guid = AuthenticationUtil.GetLoginUserGuid();
                var user = PKBag.OnlineUserRecorder.GetUserByAuthenticationId(guid);
                PKBag.OnlineUserRecorder.Delete(user);
            }

            System.Web.HttpContext.Current.Session.Remove(SessionConst.LoginUser);
            System.Web.HttpContext.Current.Session.Remove(SessionConst.Menus);
        }
        public async Task Delete_Datamodel_Ok()
        {
            HttpClient client = GetTestClient();

            string dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/DeleteDatamodel?modelName=41111";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Delete, dataPathWithData);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
Esempio n. 13
0
        public async Task GetCurrentUser_ShouldReturnOk()
        {
            var client = GetTestClient();

            string             requestUrl         = "/designer/api/v1/user/current";
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, requestUrl);
            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            response.StatusCode.Should().Be(System.Net.HttpStatusCode.OK);
            response.Headers.First(h => h.Key == "Set-Cookie").Value.Should().Satisfy(e => e.Contains("XSRF-TOKEN"));
        }
Esempio n. 14
0
        public async Task Get_RepositoryDoesNotExists_ShouldReturnNotFound()
        {
            var org = "ttd";
            var targetRepository = $"thisDoesNotExist-datamodels";

            var                httpClient         = GetTestClient();
            string             requestUrl         = $"/designer/api/v1/{org}/{targetRepository}/repositorysettings";
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, requestUrl);
            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(httpClient, httpRequestMessage);

            HttpResponseMessage response = await httpClient.SendAsync(httpRequestMessage);

            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
        }
Esempio n. 15
0
        public async Task GetDatamodel_ValidPath_ShouldReturnContent(string modelPath)
        {
            var org        = "ttd";
            var repository = "hvem-er-hvem";

            var client             = GetTestClient();
            var url                = $"{_versionPrefix}/{org}/{repository}/datamodels/{modelPath}";
            var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            var response = await client.SendAsync(httpRequestMessage);

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public async Task Get_Put_Updatemodel3_Ok()
        {
            string unitTestFolder = Path.GetDirectoryName(new Uri(typeof(DatamodelsControllerTests).Assembly.Location).LocalPath);

            unitTestFolder = Path.Combine(unitTestFolder, @"..\..\..\_TestData\");
            if (File.Exists(unitTestFolder + "Repositories/testuser/ttd/ttd-datamodels/App/models/0678.schema.json"))
            {
                File.Delete(unitTestFolder + "Repositories/testuser/ttd/ttd-datamodels/App/models/0678.schema.json");
            }

            File.Copy(unitTestFolder + "Model/Xsd/RA-0678_M.xsd", unitTestFolder + "Repositories/testuser/ttd/ttd-datamodels/App/models/0678.xsd", true);

            HttpClient client = GetTestClient();

            string dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/GetDatamodel?modelName=0678";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, dataPathWithData)
            {
            };

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            string responsestring = await response.Content.ReadAsStringAsync();

            TextReader textReader = new StringReader(responsestring);
            JsonValue  jsonValue  = await JsonValue.ParseAsync(textReader);

            JsonSchema jsonSchema = new JsonSerializer().Deserialize <JsonSchema>(jsonValue);

            dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/UpdateDatamodel?modelName=0678";

            var       serializer = new JsonSerializer();
            JsonValue toar       = serializer.Serialize(jsonSchema);

            string             requestBody           = toar.ToString();
            HttpRequestMessage httpRequestMessagePut = new HttpRequestMessage(HttpMethod.Put, dataPathWithData)
            {
                Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
            };

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessagePut);

            HttpResponseMessage responsePut = await client.SendAsync(httpRequestMessagePut);

            Assert.Equal(HttpStatusCode.OK, responsePut.StatusCode);
        }
Esempio n. 17
0
        public async Task CreateApp_InvalidRepoName_BadRequest()
        {
            // Arrange
            string uri = $"/designer/api/v1/repos/ttd&repository=2021-application";

            HttpClient         client             = GetTestClient(new Mock <IRepository>().Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, res.StatusCode);
        }
Esempio n. 18
0
        public async Task CopyApp_TargetRepoAlreadyExists_ConflictIsReturned()
        {
            // Arrange
            string uri = $"/designer/api/v1/repos/copyapp?org=ttd&sourceRepository=apps-test&targetRepository=existing-repo";

            HttpClient         client             = GetTestClient(new Mock <IRepository>().Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            // Assert
            Assert.Equal(HttpStatusCode.Conflict, res.StatusCode);
        }
Esempio n. 19
0
        public async Task GetDatamodels_NoInput_ShouldReturnAllModels()
        {
            var client = GetTestClient();
            var url = $"{_versionPrefix}/ttd/hvem-er-hvem/Datamodels/";

            var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url);            

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            var response = await client.SendAsync(httpRequestMessage);
            var json = await response.Content.ReadAsStringAsync();
            var altinnCoreFiles = System.Text.Json.JsonSerializer.Deserialize<List<AltinnCoreFile>>(json);

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(7, altinnCoreFiles.Count);
        }
        public async void KeepAlive_SessionIsExtended()
        {
            // Arrange
            string uri = $"{_versionPrefix}/keepalive";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri);
            HttpClient         client             = GetTestClient();

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public async Task Get_Datamodel_onlyXsd_Ok()
        {
            HttpClient client = GetTestClient();

            string dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/GetDatamodel?modelName=35721";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, dataPathWithData);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);
            string responsestring = await response.Content.ReadAsStringAsync();
            TextReader textReader = new StringReader(responsestring);
            JsonValue jsonValue = await JsonValue.ParseAsync(textReader);
            JsonSchema jsonSchema = new JsonSerializer().Deserialize<JsonSchema>(jsonValue);
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(5, jsonSchema.Count);
        }
        public async Task UpdateDatamodel_FilePathIsInvalid_ReturnsBadRequest()
        {
            // Arrange
            HttpClient client = GetTestClient();

            string dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/GetDatamodel?modelName=0678";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, dataPathWithData)
            {
            };

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            string responsestring = await response.Content.ReadAsStringAsync();

            TextReader textReader = new StringReader(responsestring);
            JsonValue  jsonValue  = await JsonValue.ParseAsync(textReader);

            JsonSchema jsonSchema = new JsonSerializer().Deserialize <JsonSchema>(jsonValue);

            dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/UpdateDatamodel?modelName=../../0678";

            var       serializer = new JsonSerializer();
            JsonValue toar       = serializer.Serialize(jsonSchema);

            string             requestBody           = toar.ToString();
            HttpRequestMessage httpRequestMessagePut = new HttpRequestMessage(HttpMethod.Put, dataPathWithData)
            {
                Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
            };

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessagePut);

            // Act
            HttpResponseMessage responsePut = await client.SendAsync(httpRequestMessagePut);

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, responsePut.StatusCode);
            string responsestringPut = await responsePut.Content.ReadAsStringAsync();

            Assert.Equal("Invalid model name value.", responsestringPut);
        }
Esempio n. 23
0
        public async Task CopyApp_InvalidSourceRepoName_BadRequest()
        {
            // Arrange
            string uri = "/designer/api/v1/repos/copyapp?org=ttd&sourceRepository=ddd.git%3Furl%3D{herkanmannåfrittgjøreting}&targetRepository=cloned-target-app";

            HttpClient         client             = GetTestClient(new Mock <IRepository>().Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            string actual = await res.Content.ReadAsStringAsync();

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, res.StatusCode);
            Assert.Contains("is an invalid repository name", actual);
        }
        public async Task GetDatamodel_InvalidFilePath_ReturnsBadRequest()
        {
            // Arrange
            HttpClient client = GetTestClient();

            string dataPathWithData = $"{_versionPrefix}/ttd/ttd-datamodels/Datamodels/GetDatamodel?modelName=../App/models/41111";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, dataPathWithData);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);
            string responsestring = await response.Content.ReadAsStringAsync();

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Equal("Invalid model name value.", responsestring);
        }
Esempio n. 25
0
        public static void AddOnlineUser(OnlineUser onlineUser)
        {
            try
            {
                // 获取在线用户记录器
                OnlineUserRecorder recorder = HttpContext.Current.Cache[SessionConst.OnlineUserRecorderCacheKey] as OnlineUserRecorder;

                if (recorder == null)
                {
                    Register();
                    recorder = HttpContext.Current.Cache[SessionConst.OnlineUserRecorderCacheKey] as OnlineUserRecorder;
                }


                //用于限制用户只能在一处登录
                onlineUser.AuthenticationId = AuthenticationUtil.GetLoginUserGuid();

                // 用户角色
                //onlineUser.UserDegree = user.UserRoles.First().RoleId;
                // SessionID
                onlineUser.SessionID = HttpContext.Current.Session != null ? HttpContext.Current.Session.SessionID : onlineUser.UserName;
                // IP 地址
                //onlineUser.ClientIP = IPUtil.GetHostAddress();
                // 登录时间
                if (!onlineUser.LoginTime.HasValue)
                {
                    onlineUser.LoginTime = DateTime.Now;
                }
                // 最后活动时间
                onlineUser.ActiveTime = DateTime.Now;
                // 最后请求地址
                onlineUser.RequestURL = HttpContext.Current.Request.RawUrl;

                // 保存用户信息
                recorder.AddUser(onlineUser);
            }
            catch (Exception ex)
            {
                _logger.Info(ex);
            }
        }
Esempio n. 26
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            try
            {
                bool success = await _proxy.RegisterUserAsync(model.Customer, AuthenticationUtil.HashPasswordString(model.Customer.Email, model.Password));

                if (!success)
                {
                    return(View());
                }

                Session["roleId"]     = model.Customer.RoleId;
                Session["customerId"] = model.Customer.Id;
                Session["email"]      = model.Customer.Email;
                return(RedirectToAction("Index", "Home"));
            }
            catch
            {
                return(View());
            }
        }
        public async void GetRemainingSessionTime_Ok()
        {
            // Arrange
            string uri = $"{_versionPrefix}/remaining";

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri);

            HttpClient client = GetTestClient();

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            string responseString = await response.Content.ReadAsStringAsync();

            int remainingTime = int.Parse(responseString);

            // Assert
            Assert.True(remainingTime == 194);
        }
Esempio n. 28
0
        public async Task <ActionResult> Login(LoginViewModel model)
        {
            try
            {
                var customer = await _proxy.LoginCustomerAsync(model.Email, AuthenticationUtil.HashPasswordString(model.Email, model.Password));

                if (customer == null)
                {
                    return(RedirectToAction("Login"));
                }

                Session["roleId"]     = customer.RoleId;
                Session["customerId"] = customer.Id;
                Session["email"]      = customer.Email;
                return(RedirectToAction("Index", "Home"));
            }
            catch
            {
                return(View());
            }
        }
        public async Task GetReleases_SingleLaggingRelease_PipelineServiceCalled()
        {
            // Arrange
            string uri = $"{_versionPrefix}/udi/kjaerestebesok/releases?sortBy=created&sortDirection=Descending";
            List <ReleaseEntity> completedReleases = GetReleasesList("singleLaggingRelease.json");

            Mock <IPipelineService> pipelineService = new Mock <IPipelineService>();

            pipelineService
            .Setup(ps => ps.UpdateReleaseStatus(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            Mock <IReleaseService> releaseService = new Mock <IReleaseService>();

            releaseService
            .Setup(rs => rs.GetAsync(It.IsAny <DocumentQueryModel>()))
            .ReturnsAsync(new SearchResults <ReleaseEntity> {
                Results = completedReleases
            });

            HttpClient         client             = GetTestClient(releaseService.Object, pipelineService.Object);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri);

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            // Act
            HttpResponseMessage res = await client.SendAsync(httpRequestMessage);

            string responseString = await res.Content.ReadAsStringAsync();

            SearchResults <ReleaseEntity> searchResult = JsonSerializer.Deserialize <SearchResults <ReleaseEntity> >(responseString, _options);
            IEnumerable <ReleaseEntity>   actual       = searchResult.Results;

            // Assert
            Assert.Equal(HttpStatusCode.OK, res.StatusCode);
            Assert.Equal(5, actual.Count());
            Assert.Contains(actual, r => r.Build.Status == Altinn.Studio.Designer.TypedHttpClients.AzureDevOps.Enums.BuildStatus.InProgress);
            pipelineService.Verify(p => p.UpdateReleaseStatus(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
            releaseService.VerifyAll();
        }
Esempio n. 30
0
        public async Task AddXsd_DatamodelsRepo_ShouldReturnCreated()
        {
            // Arrange
            var org = "ttd";
            var sourceRepository = "empty-datamodels";
            var developer        = "testUser";
            var targetRepository = Guid.NewGuid().ToString();

            await TestDataHelper.CopyRepositoryForTest(org, sourceRepository, developer, targetRepository);

            var client = GetTestClient();
            var url    = $"{_versionPrefix}/{org}/{targetRepository}/datamodels/upload";

            var fileStream    = TestDataHelper.LoadDataFromEmbeddedResource("Designer.Tests._TestData.Model.Xsd.Kursdomene_HvemErHvem_M_2021-04-08_5742_34627_SERES.xsd");
            var formData      = new MultipartFormDataContent();
            var streamContent = new StreamContent(fileStream);

            streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
            formData.Add(streamContent, "file", "Kursdomene_HvemErHvem_M_2021-04-08_5742_34627_SERES.xsd");

            var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, url)
            {
                Content = formData
            };

            await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage);

            try
            {
                var response = await client.SendAsync(httpRequestMessage);

                Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            }
            finally
            {
                TestDataHelper.DeleteAppRepository(org, targetRepository, developer);
            }
        }