Пример #1
0
        public async void GetInstancesAndCheckEncoding()
        {
            await storageClient.PostInstances(testAppId, testInstanceOwnerId);

            string url = $"{versionPrefix}/instances/{testInstanceOwnerId}";
            HttpResponseMessage response = await client.GetAsync(url);

            response.EnsureSuccessStatusCode();
            Assert.Equal("application/json; charset=utf-8", response.Content.Headers.ContentType.ToString());
        }
Пример #2
0
        public async void StoreAForm()
        {
            if (!blobSetup)
            {
                await EnsureValidStorage();
            }

            object jsonContent = new
            {
                universe = 42,
                årsjul   = 365,
                text     = "Fem flotte åer er bedre en to ærlige øl!",
            };

            // create instance
            Instance newInstance = await _instanceClient.PostInstances(testAppId, testInstanceOwnerId);

            string requestUri = $"{versionPrefix}/instances/{newInstance.Id}/data?dataType={dataType}";

            // post the file
            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _validToken);
            HttpResponseMessage postResponse = await _client.PostAsync(requestUri, jsonContent.AsJson());

            postResponse.EnsureSuccessStatusCode();
        }
Пример #3
0
        /// <summary>
        /// Test a user scenario. Create application, multiple get/put changed data,
        /// </summary>
        /// [Fact]
        public async void TestUserScenario()
        {
            InstanceClient storage         = new InstanceClient(new HttpClient());
            int            instanceOwnerId = 42;

            // Create application instance
            string instanceId = await storage.PostInstances("TEST-sailor", instanceOwnerId);

            Instance instance = await storage.GetInstances(instanceId, instanceOwnerId);

            Dictionary <string, string> data = new Dictionary <string, string>
            {
                { "dataFor", instanceOwnerId.ToString() }
            };

            await storage.PostDataReadFromFile(instanceId, instanceOwnerId, "test.json", "application/json");

            Instance instanceUpdated = await storage.GetInstances(instanceId, instanceOwnerId);

            string dataId = instance.Data.Find(m => m.FormId.Equals("default")).Id;

            for (int i = 0; i < 100; i++)
            {
                data.Add("field" + i, RandomString(i));

                logger.Information(data["field" + i]);

                /*
                 * storage.PutData(instanceId, dataId, instanceOwnerId, "test.json", "applicatino/json", data);
                 *
                 * var storedData = storage.GetData(instanceId, dataId, instanceOwnerId);
                 */
            }
        }
        private async Task <bool> UploadInstances(List <Instance> instances)
        {
            foreach (Instance instance in instances)
            {
                await instanceClient.PostInstances(instance.AppId, instance);
            }

            return(true);
        }
        public async void GetInstancesAndCheckEncoding()
        {
            if (!blobSetup)
            {
                await EnsureValidStorage();
            }

            await _instanceClient.PostInstances(testAppId, testInstanceOwnerId);

            string url = $"{versionPrefix}/instances?org={testOrg}&appId={testAppId}&instanceOwner.partyId={testInstanceOwnerId}";

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _validOrgToken);
            HttpResponseMessage response = await _client.GetAsync(url);

            response.EnsureSuccessStatusCode();
            Assert.Equal("application/json; charset=utf-8", response.Content.Headers.ContentType.ToString());
        }
        private async Task <List <DataElement> > CreateInstanceWithData(int count, bool setDownload = true)
        {
            List <DataElement> dataElements = new List <DataElement>();

            // create instance
            Instance newInstance = await instanceClient.PostInstances(testAppId, testInstanceOwnerId);

            for (int i = 0; i < count; i++)
            {
                object jsonContent = new
                {
                    number   = i,
                    universe = 42,
                    årsjul   = 365,
                    text     = "Fem flotte åer er bedre en to ærlige øl!",
                };

                string requestUri = $"{versionPrefix}/instances/{newInstance.Id}/data?dataType={dataType}";

                // post the file
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _validToken);
                HttpResponseMessage postResponse = await client.PostAsync(requestUri, jsonContent.AsJson());

                DataElement dataElement = JsonConvert.DeserializeObject <DataElement>(await postResponse.Content.ReadAsStringAsync());

                if (setDownload)
                {
                    // update downloaded structure on data element
                    dataElement.AppOwner ??= new ApplicationOwnerDataState();
                    dataElement.AppOwner.Downloaded = new List <DateTime>
                    {
                        DateTime.UtcNow
                    };

                    requestUri = $"{versionPrefix}/instances/{newInstance.Id}/dataelements/{dataElement.Id}";
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _validToken);
                    HttpResponseMessage putResponse = await client.PutAsync(requestUri, dataElement.AsJson());

                    dataElements.Add(JsonConvert.DeserializeObject <DataElement>(await putResponse.Content.ReadAsStringAsync()));
                }
                else
                {
                    dataElements.Add(dataElement);
                }
            }

            return(dataElements);
        }
Пример #7
0
        /// <summary>
        /// Method that loads the m1000 dataset into cosmos db
        /// </summary>
        /// <param name="appId">App id</param>
        /// <param name="client">instance client</param>
        public static void LoadData(string appId, InstanceClient client)
        {
            try
            {
                List <Instance> ins = client.GetInstancesForOrg(appId.Split("/")[0], 1000).Result;
                if (ins.Count == 1000)
                {
                    return;
                }
            }
            catch
            {
            }

            string          json       = File.ReadAllText("data/m1000-instances.json");
            JObject         jsonObject = JObject.Parse(json);
            List <Instance> instances  = jsonObject["instances"].ToObject <List <Instance> >();

            foreach (Instance instance in instances)
            {
                Instance i = client.PostInstances(appId, instance).Result;
            }
        }
        /// <summary>
        ///  Creates 1000 instances with random dates.
        /// </summary>
        public static bool For1000InstanceOwners(HttpClient client)
        {
            string testAppId = "tdd/m1000";
            string testOrg   = "tdd";

            CreateTestApplication(testAppId, client);

            InstanceClient instanceClient = new InstanceClient(client);

            string[] processTaskIds     = { "Data_1", "Submit_1", null };
            string[] processEndStateIds = { "EndEvent_1", "ErrorEvent_1", null };

            Random   randomInt = new Random();
            Random   randomDay = new Random();
            DateTime start     = new DateTime(2019, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

            for (int i = 0; i < 1000; i++)
            {
                ProcessState processState = new ProcessState();

                if (i < 200)
                {
                    processState.CurrentTask = new ProcessElementInfo
                    {
                        Started   = start,
                        ElementId = processTaskIds[0],
                    };
                }
                else if (i < 400)
                {
                    processState.CurrentTask = new ProcessElementInfo
                    {
                        Started   = start,
                        ElementId = processTaskIds[1],
                    };
                }
                else if (i < 900)
                {
                    processState.Started  = start;
                    processState.Ended    = start.AddDays(2);
                    processState.EndEvent = processEndStateIds[0];
                }
                else
                {
                    processState.Started  = start;
                    processState.EndEvent = "ErrorEvent_1";
                    processState.Ended    = start.AddDays(4);
                }

                DateTime dueDate         = start.AddDays(randomDay.Next(31, 366));
                DateTime creationDate    = dueDate.AddDays(-30);
                DateTime lastChangedDate = dueDate.AddDays(randomDay.Next(-20, 20));

                Instance instance = new Instance
                {
                    Org           = testOrg,
                    AppId         = testAppId,
                    InstanceOwner = new InstanceOwner {
                        PartyId = "1000"
                    },
                    Process      = processState,
                    LastChanged  = lastChangedDate,
                    Created      = creationDate,
                    DueBefore    = dueDate,
                    VisibleAfter = dueDate.AddDays(-30),
                    AppOwner     = new ApplicationOwnerState
                    {
                        Labels = new List <string>(),
                    }
                };

                string[] labelIds = { "zero", "one", "two" };

                if (i < 100)
                {
                    instance.AppOwner.Labels = null;
                }
                else if (i < 300)
                {
                    instance.AppOwner.Labels.Add(labelIds[0]);
                }
                else if (i < 600)
                {
                    instance.AppOwner.Labels.Add(labelIds[1]);
                }
                else
                {
                    instance.AppOwner.Labels.Add(labelIds[1]);
                    instance.AppOwner.Labels.Add(labelIds[2]);
                }

                Instance resultInstance = instanceClient.PostInstances(testAppId, instance).Result;
            }

            return(true);
        }
        /// <summary>
        ///  Creates 1000 instances with random dates.
        /// </summary>
        public static bool For1000InstanceOwners(HttpClient client)
        {
            string testAppId = "tdd/m1000";
            string testOrg   = "tdd";

            CreateTestApplication(testAppId, client);

            InstanceClient instanceClient = new InstanceClient(client);

            string[] processTaskIds     = { "FormFilling_1", "Submit_1", null };
            string[] processEndStateIds = { "EndEvent_1", "ErrorEvent_1", null };

            Random   randomInt = new Random();
            Random   randomDay = new Random();
            DateTime start     = new DateTime(2019, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

            for (int i = 0; i < 1000; i++)
            {
                ProcessState processState = new ProcessState();

                if (i < 200)
                {
                    processState.CurrentTask = processTaskIds[0];
                }
                else if (i < 400)
                {
                    processState.CurrentTask = processTaskIds[1];
                }
                else if (i < 900)
                {
                    processState.IsComplete = true;
                    processState.EndState   = processEndStateIds[0];
                }
                else
                {
                    processState.IsInError = true;
                    processState.EndState  = "ErrorEvent_1";
                }

                DateTime dueDate         = start.AddDays(randomDay.Next(31, 366));
                DateTime creationDate    = dueDate.AddDays(-30);
                DateTime lastChangedDate = dueDate.AddDays(randomDay.Next(-20, 20));

                Instance instance = new Instance
                {
                    Org                 = testOrg,
                    AppId               = testAppId,
                    InstanceOwnerId     = (i + 1000).ToString(),
                    Process             = processState,
                    LastChangedDateTime = lastChangedDate,
                    CreatedDateTime     = creationDate,
                    DueDateTime         = dueDate,
                    VisibleDateTime     = dueDate.AddDays(-30),
                    Labels              = new List <string>(),
                };

                string[] labelIds = { "zero", "one", "two" };

                if (i < 100)
                {
                    instance.Labels = null;
                }
                else if (i < 300)
                {
                    instance.Labels.Add(labelIds[0]);
                }
                else if (i < 600)
                {
                    instance.Labels.Add(labelIds[1]);
                }
                else
                {
                    instance.Labels.Add(labelIds[1]);
                    instance.Labels.Add(labelIds[2]);
                }

                Instance resultInstance = instanceClient.PostInstances(testAppId, instance).Result;
            }

            return(true);
        }