コード例 #1
0
        public async void Put_UpdateData_Conflict()
        {
            string      dataPathWithData = $"{_versionPrefix}/instances/1337/6aa47207-f089-4c11-9cb2-f00af6f66a47/data/24bfec2e-c4ce-4e82-8fa9-aa39da329fd5";
            HttpContent content          = new StringContent("This is a blob file with updated data");

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1337, 1337, 3));
            HttpResponseMessage response = await client.PutAsync($"{dataPathWithData}?dataType=default", content);

            Assert.Equal(HttpStatusCode.Conflict, response.StatusCode);
        }
コード例 #2
0
        public async void Search_IncludeActivedAndDeleted_OriginalQuerySuccesfullyConverted()
        {
            // Arrange
            Dictionary <string, StringValues> actual = new Dictionary <string, StringValues>();
            Mock <IInstanceRepository>        instanceRepositoryMock = new Mock <IInstanceRepository>();

            instanceRepositoryMock
            .Setup(ir => ir.GetInstancesFromQuery(It.IsAny <Dictionary <string, StringValues> >(), It.IsAny <string>(), It.IsAny <int>()))
            .Callback <Dictionary <string, StringValues>, string, int>((query, cont, size) => { actual = query; })
            .ReturnsAsync((InstanceQueryResponse)null);

            int expectedParamCount = 3;

            HttpClient client = GetTestClient(instanceRepositoryMock);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1606, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?includeActive=true&includeDeleted=true&instanceOwner.partyId=1606");

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            Assert.True(actual.ContainsKey("instanceOwner.partyId"));
            actual.TryGetValue("status.isActiveOrSoftDeleted", out StringValues actualIsArchivedOrSoftDeleted);
            Assert.True(bool.Parse(actualIsArchivedOrSoftDeleted.First()));
            Assert.Equal(expectedParamCount, actual.Keys.Count);
        }
コード例 #3
0
        public async void Search_SearchStringDoesNotMatchAnyApp_NoCallToRepository()
        {
            // Arrange
            Mock <IInstanceRepository> instanceRepositoryMock = new Mock <IInstanceRepository>();

            instanceRepositoryMock
            .Setup(ir => ir.GetInstancesFromQuery(It.IsAny <Dictionary <string, StringValues> >(), It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync((InstanceQueryResponse)null);

            int expectedCount = 0;

            HttpClient client = GetTestClient(instanceRepositoryMock);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1606, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?searchString=karpeDiem");

            string responseContent = await responseMessage.Content.ReadAsStringAsync();

            List <MessageBoxInstance> actual = JsonConvert.DeserializeObject <List <MessageBoxInstance> >(responseContent);

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            Assert.Equal(expectedCount, actual.Count);
            instanceRepositoryMock.Verify(
                ir => ir.GetInstancesFromQuery(It.IsAny <Dictionary <string, StringValues> >(), It.IsAny <string>(), It.IsAny <int>()),
                Times.Never);
        }
コード例 #4
0
        public async void Delete_ArchivedMissingRole_ReturnsForbidden()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1337, 3));

            // Act
            HttpResponseMessage response = await client.DeleteAsync($"{BasePath}/sbl/instances/1337/367a5e5a-12c6-4a74-b72b-766d95f859b0?hard=false");

            HttpStatusCode actualStatusCode = response.StatusCode;

            // Assert
            Assert.Equal(HttpStatusCode.Forbidden, actualStatusCode);
        }
コード例 #5
0
        public async void Search_FilterOnAppId_HardDeletedInstancesAreExcludedFromResult()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1606, 3));

            int expectedCount = 1;

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?instanceOwner.partyId=1600&appId=tdd/test-applikasjon-1&language=en");

            string content = await responseMessage.Content.ReadAsStringAsync();

            List <MessageBoxInstance> actualResult = JsonConvert.DeserializeObject <List <MessageBoxInstance> >(content);

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            Assert.Equal(expectedCount, actualResult.Count);
        }
コード例 #6
0
        public async void Delete_HardDeleteSoftDeleted()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.DeleteAsync($"{BasePath}/sbl/instances/1337/7a951b5b-ef96-4032-9273-f8d7651266f4?hard=true");

            // Assert
            HttpStatusCode actualStatusCode = response.StatusCode;
            string         content          = await response.Content.ReadAsStringAsync();

            bool actualResult = JsonConvert.DeserializeObject <bool>(content);

            HttpStatusCode expectedStatusCode = HttpStatusCode.OK;
            bool           expectedResult     = true;

            Assert.Equal(expectedResult, actualResult);
            Assert.Equal(expectedStatusCode, actualStatusCode);
        }
コード例 #7
0
        public async void Delete_ActiveMissingRole_ReturnsForbidden()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1, 3));

            // Act
            HttpResponseMessage response = await client.DeleteAsync($"{BasePath}/sbl/instances/1337/e6efc10e-913b-4a81-a36a-02376f5f5678?hard=true");

            HttpStatusCode actualStatusCode = response.StatusCode;

            // Assert
            Assert.Equal(HttpStatusCode.Forbidden, actualStatusCode);
        }
コード例 #8
0
        public async void Post_NewData_NotAuthorized()
        {
            string      dataPathWithData = $"{_versionPrefix}/instances/1337/69c259d1-9c1f-4ab6-9d8b-5c210042dc4f/data";
            HttpContent content          = new StringContent("This is a blob file");

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1337, 3));
            HttpResponseMessage response = await client.PostAsync($"{dataPathWithData}?dataType=default", content);

            Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
        }
コード例 #9
0
        public async Task Instance_Post_WithNæringOgSkattemelding_ValidateOkThenNext()
        {
            // Gets JWT token. In production this would be given from authentication component when exchanging a ID porten token.
            string token = PrincipalUtil.GetToken(1337);


            // Setup client and calls Instance controller on the App that instansiates a new instances of the app
            HttpClient client = SetupUtil.GetTestClient(_factory, "tdd", "sirius");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "/tdd/sirius/instances?instanceOwnerPartyId=1337")
            {
            };

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

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

            Instance instance = JsonConvert.DeserializeObject <Instance>(responseContent);

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            Assert.NotNull(instance);
            Assert.Equal("1337", instance.InstanceOwner.PartyId);


            // Get Data from the main form
            HttpRequestMessage httpRequestMessageGetData = new HttpRequestMessage(HttpMethod.Get, "/tdd/sirius/instances/" + instance.Id + "/data/" + instance.Data[0].Id);

            {
            };

            HttpResponseMessage responseData = await client.SendAsync(httpRequestMessageGetData);

            string responseContentData = await responseData.Content.ReadAsStringAsync();

            Skjema siriusMainForm = (Skjema)JsonConvert.DeserializeObject(responseContentData, typeof(Skjema));

            // Modify the prefilled form. This would need to be replaced with the real sirius form
            siriusMainForm.Permisjonsopplysningergrp8822 = new Permisjonsopplysningergrp8822();
            siriusMainForm.Permisjonsopplysningergrp8822.AnsattEierandel20EllerMerdatadef33294 = new AnsattEierandel20EllerMerdatadef33294()
            {
                value = "50"
            };

            XmlSerializer serializer = new XmlSerializer(typeof(Skjema));

            using MemoryStream stream = new MemoryStream();

            serializer.Serialize(stream, siriusMainForm);
            stream.Position = 0;
            StreamContent streamContent = new StreamContent(stream);

            streamContent.Headers.ContentType        = MediaTypeHeaderValue.Parse("text/xml");
            streamContent.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("attachment; filename=data-element.xml");

            HttpResponseMessage putresponse = await client.PutAsync("/tdd/sirius/instances/" + instance.Id + "/data/" + instance.Data[0].Id, streamContent);

            // Add Næringsoppgave.xml
            string næringsppgave = File.ReadAllText("Data/Files/data-element.xml");

            byte[] byteArray = Encoding.UTF8.GetBytes(næringsppgave);
            //byte[] byteArray = Encoding.ASCII.GetBytes(contents);
            MemoryStream næringsoppgavestream = new MemoryStream(byteArray);

            StreamContent streamContentNæring = new StreamContent(næringsoppgavestream);

            streamContentNæring.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("attachment;  filename=data-element.xml");
            streamContentNæring.Headers.ContentType        = MediaTypeHeaderValue.Parse("text/xml");

            HttpResponseMessage postresponseNæring = await client.PostAsync("/tdd/sirius/instances/" + instance.Id + "/data/?datatype=næringsoppgave", streamContentNæring);

            DataElement dataElementNæring = (DataElement)JsonConvert.DeserializeObject(await postresponseNæring.Content.ReadAsStringAsync(), typeof(DataElement));


            // Add skattemelding.xml
            string skattemelding = File.ReadAllText("Data/Files/data-element.xml");

            byte[] byteArraySkattemelding = Encoding.UTF8.GetBytes(skattemelding);
            //byte[] byteArray = Encoding.ASCII.GetBytes(contents);
            MemoryStream skattemeldingstream = new MemoryStream(byteArraySkattemelding);

            HttpContent streamContentSkattemelding = new StreamContent(skattemeldingstream);

            streamContent.Headers.ContentType        = MediaTypeHeaderValue.Parse("text/xml");
            streamContent.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("attachment; filename=data-element.xml");

            HttpResponseMessage postresponseskattemelding = await client.PostAsync("/tdd/sirius/instances/" + instance.Id + "/data/?datatype=skattemelding", streamContentNæring);

            DataElement dataElementSkattemelding = (DataElement)JsonConvert.DeserializeObject(await postresponseskattemelding.Content.ReadAsStringAsync(), typeof(DataElement));

            // Validate instance. This validates that main form has valid data and required data
            string url = "/tdd/sirius/instances/" + instance.Id + "/validate";
            HttpResponseMessage responseValidation = await client.GetAsync(url);

            string responseContentValidation = await responseValidation.Content.ReadAsStringAsync();

            List <ValidationIssue> messages = (List <ValidationIssue>)JsonConvert.DeserializeObject(responseContentValidation, typeof(List <ValidationIssue>));

            Assert.Empty(messages);

            // Handle first next go from data to confirmation
            HttpRequestMessage httpRequestMessageFirstNext = new HttpRequestMessage(HttpMethod.Put, "/tdd/sirius/instances/" + instance.Id + "/process/next")
            {
            };

            HttpResponseMessage responseFirstNext = await client.SendAsync(httpRequestMessageFirstNext);

            string responseContentFirstNext = await responseFirstNext.Content.ReadAsStringAsync();

            ProcessState stateAfterFirstNext = (ProcessState)JsonConvert.DeserializeObject(responseContentFirstNext, typeof(ProcessState));

            Assert.Equal("Task_2", stateAfterFirstNext.CurrentTask.ElementId);

            // Validate instance in Task_2. This validates that PDF for nærings is in place
            HttpResponseMessage responseValidationTask2 = await client.GetAsync(url);

            string responseContentValidationTask2 = await responseValidationTask2.Content.ReadAsStringAsync();

            List <ValidationIssue> messagesTask2 = (List <ValidationIssue>)JsonConvert.DeserializeObject(responseContentValidationTask2, typeof(List <ValidationIssue>));

            Assert.Empty(messagesTask2);

            // Move process from Task_2 (Confirmation) to Task_3  (Feedback).
            HttpRequestMessage httpRequestMessageSecondNext = new HttpRequestMessage(HttpMethod.Put, "/tdd/sirius/instances/" + instance.Id + "/process/next")
            {
            };

            HttpResponseMessage responseSecondNext = await client.SendAsync(httpRequestMessageSecondNext);

            string responseContentSecondNext = await responseSecondNext.Content.ReadAsStringAsync();

            ProcessState stateAfterSecondNext = (ProcessState)JsonConvert.DeserializeObject(responseContentSecondNext, typeof(ProcessState));

            Assert.Equal("Task_3", stateAfterSecondNext.CurrentTask.ElementId);

            // Delete all data created
            TestDataUtil.DeleteInstanceAndData("tdd", "sirius", 1337, new Guid(instance.Id.Split('/')[1]));
        }
コード例 #10
0
        public async void Get_DataElement_Org_Ok()
        {
            // Arrange
            string dataPathWithData = $"{_versionPrefix}/instances/1337/ca9da17c-904a-44d2-9771-a5420acfbcf3/data/28023597-516b-4a71-a77c-d3736912abd5";

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetOrgToken("tdd"));

            // Act
            HttpResponseMessage response = await client.GetAsync($"{dataPathWithData}");

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
コード例 #11
0
        public async void Post_NewData_Ok()
        {
            string      dataPathWithData = $"{_versionPrefix}/instances/1337/bc19107c-508f-48d9-bcd7-54ffec905306/data";
            HttpContent content          = new StringContent("This is a blob file");

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1337, 1337, 3));
            HttpResponseMessage response = await client.PostAsync($"{dataPathWithData}?dataType=default", content);

            if (response.StatusCode.Equals(HttpStatusCode.InternalServerError))
            {
                string serverContent = await response.Content.ReadAsStringAsync();

                Assert.Equal("Hei", serverContent);
            }

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
        }
コード例 #12
0
        public async void Get_DataElement_ToLowAuthenticationLevel()
        {
            string dataPathWithData = $"{_versionPrefix}/instances/1337/d91fd644-1028-4efd-924f-4ca187354514/data/f4feb26c-8eed-4d1d-9d75-9239c40724e9";

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1337, 1337, 1));
            HttpResponseMessage response = await client.GetAsync($"{dataPathWithData}");

            Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
        }
コード例 #13
0
        public async void Get_DataElements_NotAuthorized()
        {
            string dataPathWithData = $"{_versionPrefix}/instances/1337/d91fd644-1028-4efd-924f-4ca187354514/dataelements/";

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1, 3));
            HttpResponseMessage response = await client.GetAsync($"{dataPathWithData}");

            Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
        }
コード例 #14
0
        public async void Delete_DataElement_NotAuthorized()
        {
            string dataPathWithData = $"{_versionPrefix}/instances/1337/649388f0-a2c0-4774-bd11-c870223ed819/data/11f7c994-6681-47a1-9626-fcf6c27308a5";

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1, 3));
            HttpResponseMessage response = await client.DeleteAsync($"{dataPathWithData}");

            Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
        }
コード例 #15
0
        public async void Undelete_RestoreNonExistentInstance_ReturnsNotFound()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.PutAsync($"{BasePath}/sbl/instances/1337/4be22ede-a16c-4a93-be7f-c529788d6a4c/undelete", null);

            // Assert
            Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
        }
コード例 #16
0
        public async Task Instance_Post_WithNæringOgSkattemelding_ValidateOk()
        {
            string token = PrincipalUtil.GetToken(1337);

            HttpClient client = SetupUtil.GetTestClient(_factory, "tdd", "sirius");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "/tdd/sirius/instances?instanceOwnerPartyId=1337")
            {
            };

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

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

            Instance instance = JsonConvert.DeserializeObject <Instance>(responseContent);

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            Assert.NotNull(instance);
            Assert.Equal("1337", instance.InstanceOwner.PartyId);


            // Get Data from Instance
            HttpRequestMessage httpRequestMessageGetData = new HttpRequestMessage(HttpMethod.Get, "/tdd/sirius/instances/" + instance.Id + "/data/" + instance.Data[0].Id);

            {
            };

            HttpResponseMessage responseData = await client.SendAsync(httpRequestMessageGetData);

            string responseContentData = await responseData.Content.ReadAsStringAsync();


            Skjema siriusMainForm = (Skjema)JsonConvert.DeserializeObject(responseContentData, typeof(Skjema));

            // Modify the prefilled form. This would need to be replaced with the real sirius form
            siriusMainForm.Permisjonsopplysningergrp8822 = new Permisjonsopplysningergrp8822();
            siriusMainForm.Permisjonsopplysningergrp8822.AnsattEierandel20EllerMerdatadef33294 = new AnsattEierandel20EllerMerdatadef33294()
            {
                value = "50"
            };

            XmlSerializer serializer = new XmlSerializer(typeof(Skjema));

            using MemoryStream stream = new MemoryStream();

            serializer.Serialize(stream, siriusMainForm);
            stream.Position = 0;
            StreamContent streamContent = new StreamContent(stream);

            streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/xml");

            HttpResponseMessage putresponse = await client.PutAsync("/tdd/sirius/instances/" + instance.Id + "/data/" + instance.Data[0].Id, streamContent);

            // Add Næringsoppgave.xml
            string næringsppgave = File.ReadAllText("Data/Files/data-element.xml");

            byte[] byteArray = Encoding.UTF8.GetBytes(næringsppgave);
            //byte[] byteArray = Encoding.ASCII.GetBytes(contents);
            MemoryStream næringsoppgavestream = new MemoryStream(byteArray);

            StreamContent streamContentNæring = new StreamContent(næringsoppgavestream);

            streamContentNæring.Headers.ContentType        = MediaTypeHeaderValue.Parse("text/xml");
            streamContentNæring.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("attachment;  filename=data-element.xml");

            HttpResponseMessage postresponseNæring = await client.PostAsync("/tdd/sirius/instances/" + instance.Id + "/data/?datatype=næringsoppgave", streamContentNæring);

            DataElement dataElementNæring = (DataElement)JsonConvert.DeserializeObject(await postresponseNæring.Content.ReadAsStringAsync(), typeof(DataElement));


            // Add skattemelding.xml
            string skattemelding = File.ReadAllText("Data/Files/data-element.xml");

            byte[] byteArraySkattemelding = Encoding.UTF8.GetBytes(næringsppgave);
            //byte[] byteArray = Encoding.ASCII.GetBytes(contents);
            MemoryStream skattemeldingstream = new MemoryStream(byteArraySkattemelding);

            StreamContent streamContentSkattemelding = new StreamContent(skattemeldingstream);

            streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");

            HttpResponseMessage postresponseskattemelding = await client.PostAsync("/tdd/sirius/instances/" + instance.Id + "/data/?datatype=skattemelding", streamContentNæring);

            DataElement dataElementSkattemelding = (DataElement)JsonConvert.DeserializeObject(await postresponseskattemelding.Content.ReadAsStringAsync(), typeof(DataElement));

            // Validate instance
            string url = "/tdd/sirius/instances/" + instance.Id + "/validate";
            HttpResponseMessage responseValidation = await client.GetAsync(url);

            string responseContentValidation = await responseValidation.Content.ReadAsStringAsync();

            List <ValidationIssue> messages = (List <ValidationIssue>)JsonConvert.DeserializeObject(responseContentValidation, typeof(List <ValidationIssue>));

            Assert.Empty(messages);
            TestDataUtil.DeleteInstanceAndData("tdd", "sirius", 1337, new Guid(instance.Id.Split('/')[1]));
        }
コード例 #17
0
        public async void Delete_SoftDeleteActiveInstance_InstanceIsMarked_EventIsCreated_ReturnsTrue()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.DeleteAsync($"{BasePath}/sbl/instances/1337/08274f48-8313-4e2d-9788-bbdacef5a54e?hard=false");

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

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

            bool actualResult = JsonConvert.DeserializeObject <bool>(content);

            Assert.True(actualResult);
        }
コード例 #18
0
        public async void Search_MultiplePartyIds_InstancesForBothIdsReturned()
        {
            // Arrange
            int        expectedCount = 3;
            int        expectedDistinctInstanceOwners = 2;
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1600, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?instanceOwner.partyId=1600&instanceOwner.partyId=1000&appId=ttd/complete-test");

            string content = await responseMessage.Content.ReadAsStringAsync();

            List <MessageBoxInstance> actual = JsonConvert.DeserializeObject <List <MessageBoxInstance> >(content);
            int distinctInstanceOwners       = actual.Select(i => i.InstanceOwnerId).Distinct().Count();

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            Assert.Equal(expectedCount, actual.Count());
            Assert.Equal(expectedDistinctInstanceOwners, distinctInstanceOwners);
        }
コード例 #19
0
        public async void Delete_ActiveHasRole_ReturnsOk()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.DeleteAsync($"{BasePath}/sbl/instances/1337/d9a586ca-17ab-453d-9fc5-35eaadb3369b?hard=true");

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

            bool actualResult = JsonConvert.DeserializeObject <bool>(content);

            // Assert
            Assert.True(actualResult);
        }
コード例 #20
0
        public async void GetMessageBoxInstanceList_RequestArchivedInstancesForGivenOwner_ReturnsCorrectListOfInstances()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/{1337}?state=archived");

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);

            string responseContent = await responseMessage.Content.ReadAsStringAsync();

            List <MessageBoxInstance> messageBoxInstances = JsonConvert.DeserializeObject <List <MessageBoxInstance> >(responseContent);

            int actualCount   = messageBoxInstances.Count;
            int expectedCount = 6;

            Assert.Equal(expectedCount, actualCount);
        }
コード例 #21
0
        public async void Delete_ArchivedHasRole_ReturnsOk()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.DeleteAsync($"{BasePath}/sbl/instances/1337/3b67392f-36c6-42dc-998f-c367e771dcdd?hard=false");

            HttpStatusCode actualStatusCode = response.StatusCode;
            string         content          = await response.Content.ReadAsStringAsync();

            bool actualResult = JsonConvert.DeserializeObject <bool>(content);

            // Assert
            Assert.True(actualResult);
            Assert.Equal(HttpStatusCode.OK, actualStatusCode);
        }
コード例 #22
0
        public async void GetMessageBoxInstance_RequestsExistingInstanceUserCannotDelete_InstanceIsSuccessfullyMappedAndReturned()
        {
            // Arrange
            string instanceId = "1606/6323a337-26e7-4d40-89e8-f5bb3d80be3a";

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1606, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/{instanceId}?language=en");

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);

            string responseContent = await responseMessage.Content.ReadAsStringAsync();

            MessageBoxInstance actual = JsonConvert.DeserializeObject <MessageBoxInstance>(responseContent);

            Assert.False(actual.AllowDelete);
            Assert.True(actual.AuthorizedForWrite);
        }
コード例 #23
0
        public async void Search_FilterOnAppId_ReturnsActiveArchivedAndDeletedInstances()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1600, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?instanceOwner.partyId=1600&appId=ttd/steffens-2020-v2");

            string content = await responseMessage.Content.ReadAsStringAsync();

            List <MessageBoxInstance> actualResult = JsonConvert.DeserializeObject <List <MessageBoxInstance> >(content);

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            Assert.Equal(1, actualResult.Count(i => i.DeleteStatus == DeleteStatusType.SoftDeleted));
            Assert.Equal(1, actualResult.Count(i => i.ProcessCurrentTask == "FormFilling"));
            Assert.Equal(1, actualResult.Count(i => i.ProcessCurrentTask == "Archived" && i.DeleteStatus == DeleteStatusType.Default));
        }
コード例 #24
0
        public async void GetMessageBoxInstance_RequestsInstanceUserIsNotAuthorized_ForbiddenReturned()
        {
            // Arrange
            string instanceId = "1337/6323a337-26e7-4d40-89e8-f5bb3d80be3a";

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1, 1606, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/{instanceId}?language=en");

            // Assert
            Assert.Equal(HttpStatusCode.Forbidden, responseMessage.StatusCode);
        }
コード例 #25
0
        public async void Search_FilterOnUnknownParameter_BadRequestIsReturned()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1606, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?stephanie=kul");

            string content = await responseMessage.Content.ReadAsStringAsync();

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, responseMessage.StatusCode);
        }
コード例 #26
0
        public async void Undelete_RestoreSoftDeletedInstance_ReturnsTrue()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.PutAsync($"{BasePath}/sbl/instances/{1337}/da1f620f-1764-4f98-9f03-74e5e20f10fe/undelete", null);

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

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

            bool actualResult = JsonConvert.DeserializeObject <bool>(content);

            Assert.True(actualResult);
        }
コード例 #27
0
        public async void GetMessageBoxInstanceList_RequestAllInstancesForAnOwnerInEnglish_ReturnsAllElementsWithEnglishTitles()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.GetAsync($"{BasePath}/sbl/instances/1337?state=active&language=en");

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

            List <MessageBoxInstance> messageBoxInstances = JsonConvert.DeserializeObject <List <MessageBoxInstance> >(content);

            int    actualCount = messageBoxInstances.Count;
            string actualTitle = messageBoxInstances.First().Title;

            // Assert
            int    expectedCount = 13;
            string expectedTitle = "Name change";

            Assert.Equal(expectedCount, actualCount);
            Assert.Equal(expectedTitle, actualTitle);
        }
コード例 #28
0
        public async void Undelete_AttemptToRestoreHardDeletedInstance_ReturnsNotFound()
        {
            // Arrange
            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1337, 3));

            // Act
            HttpResponseMessage response = await client.PutAsync($"{BasePath}/sbl/instances/1337/f888c42b-8749-41d6-8048-8fc28c70beaa/undelete", null);

            // Assert
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);

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

            string expectedMsg = "Instance was permanently deleted and cannot be restored.";

            Assert.Equal(expectedMsg, content);
        }
コード例 #29
0
        public async void Search_MatchFoundForSearchString_OriginalQuerySuccesfullyConverted()
        {
            // Arrange
            Dictionary <string, StringValues> actual = new Dictionary <string, StringValues>();
            Mock <IInstanceRepository>        instanceRepositoryMock = new Mock <IInstanceRepository>();

            instanceRepositoryMock
            .Setup(ir => ir.GetInstancesFromQuery(It.IsAny <Dictionary <string, StringValues> >(), It.IsAny <string>(), It.IsAny <int>()))
            .Callback <Dictionary <string, StringValues>, string, int>((query, cont, size) => { actual = query; })
            .ReturnsAsync((InstanceQueryResponse)null);
            string expectedAppId = "tdd/endring-av-navn";

            HttpClient client = GetTestClient(instanceRepositoryMock);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(3, 1606, 3));

            // Act
            HttpResponseMessage responseMessage = await client.GetAsync($"{BasePath}/sbl/instances/search?searchString=navn");

            // Assert
            Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
            Assert.True(actual.ContainsKey("appId"));
            actual.TryGetValue("appId", out StringValues actualAppid);
            Assert.Equal(expectedAppId, actualAppid.First());
            Assert.False(actual.ContainsKey("searchString"));
            instanceRepositoryMock.VerifyAll();
        }
コード例 #30
0
        public async void Put_UpdateData_Ok()
        {
            string      dataPathWithData = $"{_versionPrefix}/instances/1337/649388f0-a2c0-4774-bd11-c870223ed819/data/11f7c994-6681-47a1-9626-fcf6c27308a5";
            HttpContent content          = new StringContent("This is a blob file with updated data");

            HttpClient client = GetTestClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", PrincipalUtil.GetToken(1337, 1337, 3));
            HttpResponseMessage response = await client.PutAsync($"{dataPathWithData}?dataType=default", content);

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }