Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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());
                };
            };
        }
Exemple #6
0
        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);
        }
Exemple #8
0
        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,
                },
            };
        }
Exemple #9
0
        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();
                    };
                };
            };
        }