public void PostInstanceWithInstanceOwnerIdInQueryParam() { Mock <HttpRequest> request = new Mock <HttpRequest>(); request.SetupGet(x => x.Headers["Accept"]).Returns("application/json"); request.SetupGet(x => x.Host).Returns(new HostString("tdd.apps.at21.altinn.cloud")); request.SetupGet(x => x.Path).Returns(new PathString("/tdd/test/instances/")); request.SetupGet(x => x.Cookies["AltinnPartyId"]).Returns(instanceOwnerId); var context = new Mock <HttpContext>(); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.User).Returns(MockUser().Object); Instance actualInstance = new Instance() { InstanceOwnerId = instanceOwnerId, AppId = $"{org}/{app}", Org = $"{org}", }; InstancesController controller = NewInstanceController(context); ActionResult <Instance> result = controller.Post(org, app, int.Parse(instanceOwnerId)).Result; Assert.IsType <CreatedResult>(result.Result); Instance instance = (Instance)((CreatedResult)result.Result).Value; Assert.NotNull(instance); Assert.Equal(instanceOwnerId, instance.InstanceOwnerId); Assert.StartsWith($"https://tdd.apps.at21.altinn.cloud/tdd/test/instances/{instanceOwnerId}", instance.SelfLinks.Apps); }
public async Task TestThings() { IInstanceProvider instanceProvider = new MockInstanceProvider(new GameInstance[0]); IRunnerService executionProvider = new MockExecutionProvider(new ExecutionInfo[0]); InstancesController controller = new InstancesController(instanceProvider, executionProvider); IEnumerable <GameInstance> result = await controller.Get(); }
public async void PostInstanceWithInstanceTemplateAndXmlPrefill() { /* SETUP */ Instance instanceTemplate = new Instance() { InstanceOwnerId = instanceOwnerId, DueDateTime = DateTime.Parse("2020-01-01"), }; string instance = JsonConvert.SerializeObject(instanceTemplate); string xml = "<xml><is><no><good></good></no></is></xml>"; string boundary = "abcdefgh"; MultipartFormDataContent formData = new MultipartFormDataContent(boundary) { { new StringContent(instance, Encoding.UTF8, "application/json"), "instance" }, { new StringContent(xml, Encoding.UTF8, "application/xml"), "default" } }; MemoryStream multipartStream = new MemoryStream(); await formData.CopyToAsync(multipartStream); multipartStream.Position = 0; Mock <HttpRequest> request = new Mock <HttpRequest>(); request.SetupGet(x => x.Headers["Accept"]).Returns("application/json"); request.SetupGet(x => x.ContentType).Returns($"multipart/form-data; boundary={boundary}"); request.SetupGet(x => x.Body).Returns(multipartStream); request.SetupGet(x => x.Host).Returns(new HostString("tdd.apps.at21.altinn.cloud")); request.SetupGet(x => x.Path).Returns(new PathString("/tdd/test/instances/")); request.SetupGet(x => x.Cookies["AltinnPartyId"]).Returns(instanceOwnerId); Mock <ClaimsPrincipal> userMock = MockUser(); var context = new Mock <HttpContext>(); context.SetupGet(x => x.Request).Returns(request.Object); context.Setup(x => x.User).Returns(userMock.Object); InstancesController controller = NewInstanceController(context); /* TEST */ ActionResult <Instance> actionResult = controller.Post(org, app, null).Result; Assert.IsType <CreatedResult>(actionResult.Result); Instance createdInstance = (Instance)((CreatedResult)actionResult.Result).Value; Assert.NotNull(createdInstance); Assert.Single(createdInstance.Data); Assert.Equal("default", createdInstance.Data[0].ElementType); }
public async void PostInstanceWithXmlPrefill() { Mock <IHttpClientAccessor> httpClientAccessor = MockStorage(); Instance instanceTemplate = new Instance() { InstanceOwnerId = "20000004", DueDateTime = DateTime.Parse("2020-01-01"), }; string instance = JsonConvert.SerializeObject(instanceTemplate); string xml = "<xml><is><no><good></good></no></is></xml>"; MultipartFormDataContent formData = new MultipartFormDataContent() { { new StringContent(instance, Encoding.UTF8, "application/json"), "instance" }, { new StringContent(xml, Encoding.UTF8, "application/xml"), "default" } }; MemoryStream multipartStream = new MemoryStream(); await formData.CopyToAsync(multipartStream); Mock <HttpRequest> request = new Mock <HttpRequest>(); request.SetupGet(x => x.Headers["Accept"]).Returns("application/json"); request.SetupGet(x => x.Body).Returns(multipartStream); request.SetupGet(x => x.Scheme).Returns("http"); request.SetupGet(x => x.Host).Returns(new HostString("tdd.apps.at21.altinn.cloud")); request.SetupGet(x => x.Path).Returns(new PathString("/tdd/test/instances/")); var context = new Mock <HttpContext>(); context.SetupGet(x => x.Request).Returns(request.Object); InstancesController controller = new InstancesController( logger.Object, httpClientAccessor.Object) { ControllerContext = new ControllerContext() { HttpContext = context.Object, }, }; ActionResult <Instance> actionResult = controller.Post("tdd", "apptest", null); Assert.IsType <CreatedResult>(actionResult.Result); Instance createdInstance = (Instance)((CreatedResult)actionResult.Result).Value; Assert.NotNull(createdInstance); }
private void describe_() { InstancesController instancesController = null; String ID = null; before = () => { instancesController = new InstancesController { Request = new HttpRequestMessage(), Configuration = new HttpConfiguration() }; }; describe["Get /"] = () => { it["should return hello i am nora"] = () => { IHttpActionResult response = instancesController.Root(); String resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be("hello i am nora"); }; }; describe["GET /id"] = () => { it["should get the instance id from the VCAP_APPLICATION json"] = () => { IHttpActionResult response = instancesController.Id(); String resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be("A123F285-26B4-45F1-8C31-816DC5F53ECF"); }; }; describe["Get /env"] = () => { it["should return a list of ENV VARS"] = () => { IHttpActionResult response = instancesController.Env(); Hashtable resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be(Environment.GetEnvironmentVariables()); }; }; }
public void PostInstanceWithInstanceTemplateAsJson() { Instance instanceTemplate = new Instance() { InstanceOwnerId = instanceOwnerId, DueDateTime = DateTime.Parse("2020-01-01"), }; byte[] byteArray = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(instanceTemplate)); MemoryStream instanceStream = new MemoryStream(byteArray); Mock <HttpRequest> request = new Mock <HttpRequest>(); request.SetupGet(x => x.Headers["Accept"]).Returns("application/json"); request.SetupGet(x => x.ContentType).Returns("application/json"); request.SetupGet(x => x.Body).Returns(instanceStream); request.SetupGet(x => x.Host).Returns(new HostString("tdd.apps.at21.altinn.cloud")); request.SetupGet(x => x.Path).Returns(new PathString("/tdd/test/instances/")); request.SetupGet(x => x.Cookies["AltinnPartyId"]).Returns(instanceOwnerId); var context = new Mock <HttpContext>(); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.User).Returns(MockUser().Object); Instance actualInstance = new Instance() { InstanceOwnerId = instanceOwnerId, AppId = $"{org}/{app}", Org = $"{org}", }; InstancesController controller = NewInstanceController(context); ActionResult <Instance> result = controller.Post(org, app, null).Result; Assert.IsType <CreatedResult>(result.Result); Instance instance = (Instance)((CreatedResult)result.Result).Value; Assert.NotNull(instance); Assert.Equal(instanceOwnerId, instance.InstanceOwnerId); Assert.StartsWith($"https://tdd.apps.at21.altinn.cloud/tdd/test/instances/{instanceOwnerId}", instance.SelfLinks.Apps); }
public void PostInstanceWithInstanceJsonOnly() { Mock <IHttpClientAccessor> httpClientAccessor = MockStorage(); Instance instanceTemplate = new Instance() { DueDateTime = DateTime.Parse("2020-01-01"), }; byte[] byteArray = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(instanceTemplate)); MemoryStream instanceStream = new MemoryStream(byteArray); Mock <HttpRequest> request = new Mock <HttpRequest>(); request.SetupGet(x => x.Headers["Accept"]).Returns("application/json"); request.SetupGet(x => x.Body).Returns(instanceStream); var context = new Mock <HttpContext>(); context.SetupGet(x => x.Request).Returns(request.Object); InstancesController controller = new InstancesController( logger.Object, httpClientAccessor.Object) { ControllerContext = new ControllerContext() { HttpContext = context.Object, }, }; ActionResult <Instance> result = controller.Post("test", "app", 20000004); Instance instance = (Instance)((CreatedResult)result.Result).Value; Assert.NotNull(instance); Assert.Equal("20000004", instance.InstanceOwnerId); }
private void PrepareLookupMock(HttpStatusCode statusCode, string lookupReturnContent, Instance instanceToCreate, Instance instanceTemplate) { Mock <IInstanceRepository> mockInstanceRepository = new Mock <IInstanceRepository>(); mockInstanceRepository.Setup(ir => ir.Create(It.IsAny <Instance>())).Returns(Task.FromResult(instanceToCreate)); Mock <IApplicationRepository> mockApplicationRepository = new Mock <IApplicationRepository>(); mockApplicationRepository.Setup(ar => ar.FindOne(It.IsAny <string>(), It.IsAny <string>())).Returns( Task.FromResult(new Application() { Id = "test/lookup", Org = "test", })); Mock <IDataRepository> mockDataRepository = new Mock <IDataRepository>(); mockDataRepository.Setup(dr => dr.WriteDataToStorage(It.IsAny <Stream>(), It.IsAny <string>())).Returns(Task.FromResult(50L)); Mock <ILogger <InstancesController> > mockLogger = new Mock <ILogger <InstancesController> >(); Mock <IOptions <GeneralSettings> > mockGeneralSettings = new Mock <IOptions <GeneralSettings> >(); GeneralSettings settings = new GeneralSettings { BridgeRegisterApiEndpoint = "http://test/" }; mockGeneralSettings.Setup(c => c.Value).Returns(settings); Mock <HttpMessageHandler> handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict); handlerMock .Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage() { StatusCode = statusCode, Content = new StringContent(lookupReturnContent), }) .Verifiable(); Mock <HttpRequest> request = new Mock <HttpRequest>(); request.SetupGet(x => x.Headers["Accept"]).Returns("application/json"); request.SetupGet(x => x.Scheme).Returns("http"); request.SetupGet(x => x.Host).Returns(new HostString("platform.storage.at21.altinn.cloud")); request.SetupGet(x => x.Path).Returns(new PathString("/instances/")); request.SetupGet(x => x.Body).Returns(new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(instanceTemplate)))); request.SetupGet(x => x.ContentType).Returns("application/json"); Mock <HttpContext> context = new Mock <HttpContext>(); context.SetupGet(x => x.Request).Returns(request.Object); HttpClient httpClient = new HttpClient(handlerMock.Object); instanceController = new InstancesController( mockInstanceRepository.Object, mockApplicationRepository.Object, mockDataRepository.Object, mockGeneralSettings.Object, mockLogger.Object, httpClient) { ControllerContext = new ControllerContext() { HttpContext = context.Object, }, }; }
private void describe_() { InstancesController instancesController = null; before = () => { instancesController = new InstancesController { Request = new HttpRequestMessage(HttpMethod.Get, "http://example.com"), Configuration = new HttpConfiguration() }; }; describe["Get /"] = () => { it["should return the hello message"] = () => { var response = instancesController.Root(); String resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be("hello i am nora running on http://example.com/"); }; }; describe["GET /id"] = () => { it["should get the instance id from the INSTANCE_GUID"] = () => { var instanceGuid = Guid.NewGuid().ToString(); Environment.SetEnvironmentVariable("INSTANCE_GUID", instanceGuid); var response = instancesController.Id(); String resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be(instanceGuid); }; }; describe["Get /env"] = () => { it["should return a list of ENV VARS"] = () => { var response = instancesController.Env(); Hashtable resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be(Environment.GetEnvironmentVariables()); }; }; describe["Get /env/:name"] = () => { it["should return the desired named ENV VAR"] = () => { Environment.SetEnvironmentVariable("FRED", "JANE"); var response = instancesController.EnvName("FRED"); String resp = null; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be("JANE"); }; }; }
private void describe_() { InstancesController instancesController = null; before = () => { instancesController = new InstancesController { Request = new HttpRequestMessage(HttpMethod.Get, "http://example.com"), Configuration = new HttpConfiguration() }; }; describe["Get /"] = () => { it["should return the hello message"] = () => { var response = instancesController.Root(); string resp; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be("hello i am nora running on http://example.com/"); }; }; describe["GET /id"] = () => { it["should get the instance id from the INSTANCE_GUID"] = () => { var instanceGuid = Guid.NewGuid().ToString(); Environment.SetEnvironmentVariable("INSTANCE_GUID", instanceGuid); var response = instancesController.Id(); string resp; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be(instanceGuid); }; }; describe["Get /env"] = () => { it["should return a list of ENV VARS"] = () => { var response = instancesController.Env(); Hashtable resp; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be(Environment.GetEnvironmentVariables()); }; }; describe["Get /env/:name"] = () => { it["should return the desired named ENV VAR"] = () => { Environment.SetEnvironmentVariable("FRED", "JANE"); var response = instancesController.EnvName("FRED"); string resp; response.ExecuteAsync(new CancellationToken()).Result.TryGetContentValue(out resp); resp.should_be("JANE"); }; }; describe["Get /connect/:ip/:port"] = () => { it["should make a tcp connection to the specified ip:port"] = () => { var response = instancesController.Connect("8.8.8.8", 53); var json = response.ExecuteAsync(new CancellationToken()).Result.Content.ReadAsStringAsync(); json.Wait(); json.Result.should_be("{\"stdout\":\"Successful TCP connection to 8.8.8.8:53\",\"stderr\":\"\",\"return_code\":0}"); }; context["when the the ip:port specified are not reachable"] = () => { it["returns an error"] = () => { var response = instancesController.Connect("127.0.0.1", 20); var json = response.ExecuteAsync(new CancellationToken()).Result.Content.ReadAsStringAsync(); json.Wait(); json.Result.should_be("{\"stdout\":\"\",\"stderr\":\"Unable to make TCP connection to 127.0.0.1:20\",\"return_code\":1}"); }; }; context["when the the ip specified is null"] = () => { it["returns an error"] = () => { var response = instancesController.Connect(null, 53); var json = response.ExecuteAsync(new CancellationToken()).Result.Content.ReadAsStringAsync(); json.Wait(); json.Result.Contains("\"return_code\":2").should_be_true(); }; }; context["when the the port specified is invalid"] = () => { it["returns an error"] = () => { var response = instancesController.Connect("127.0.0.1", IPEndPoint.MinPort - 1); var json = response.ExecuteAsync(new CancellationToken()).Result.Content.ReadAsStringAsync(); json.Wait(); json.Result.Contains("\"return_code\":2").should_be_true(); response = instancesController.Connect("127.0.0.1", IPEndPoint.MaxPort + 1); json = response.ExecuteAsync(new CancellationToken()).Result.Content.ReadAsStringAsync(); json.Wait(); json.Result.Contains("\"return_code\":2").should_be_true(); }; }; }; }