Beispiel #1
0
        /// <summary>
        /// Clear resource data by using /privateapi/{0}/bulk-delete
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="idList"></param>
        /// <param name="queueTime">second</param>
        public static void ClearResourceData <T>(ISession <PrivateAuthentication> session, List <string> idList, int queueTime = 0) where T : ResourceBase
        {
            Log.Info("Starting to delete {0} resource", typeof(T).Name);

            // Verify list is Empty before executing Bulk Delete
            if (idList.Count == 0)
            {
                Log.Info("Empty list, nothing to process");
            }
            else
            {
                try
                {
                    var request = ResourceRequest.DeleteRecords().Append(
                        typeof(T).Name.ToResourceId(),
                        idList.Select(ulong.Parse).ToArray());
                    DeleteRecordResponse response = session.Call(request);
                }
                catch (Exception e)
                {
                    Log.Error(e);
                    Log.Warn("Some resources are probably not deleted.");
                }
            }
        }
 public async Task AfterTest(ISession <PrivateAuthentication> session, ITest test)
 {
     if (toDelete.Count > 0)
     {
         var req = ((DeleteRecordRequest.IBuilderWithData)toDelete.Aggregate(ResourceRequest.DeleteRecords(), (builder, pair) => builder.Append(pair.Item1, pair.Item2))).Build();
         try
         {
             await session.CallAsync(req);
         }
         finally
         {
             toDelete.Clear();
         }
     }
 }
Beispiel #3
0
 public void TearDown()
 {
     Log.PrintTestFixtureTearDown();
     using (var session = TestBase.PrivateAuthentication.GetPrivateSession(AuthenticationInfoProvider.Current.DefaultCompanyName,
                                                                           AuthenticationInfoProvider.Current.DefaultUserLogin,
                                                                           AuthenticationInfoProvider.Current.DefaultUserPassword))
     {
         foreach (var item in PublicApiGeneratedRecordIds.Reverse())
         {
             var request = ResourceRequest.DeleteRecords().Append(
                 item.Key.ToString().ToResourceId(),
                 item.Value.Select((x) => Convert.ToUInt64(x)).ToArray());
             DeleteRecordResponse response = session.Call(request);
         }
     }
 }
        internal static async Task DeleteRecords(ISession <PrivateAuthentication> session, ITest test, HrbcRecordCreator.IRecordEntries records)
        {
            if (records == null)
            {
                return;
            }
            var builder = ResourceRequest.DeleteRecords();

            foreach (var entry in records.GroupBy(entry => entry.Value.ResourceType, entry => entry.Value.Id))
            {
                builder = builder.Append((ResourceId)(int)entry.Key, entry.ToList());
            }
            foreach (var entry in records.Other)
            {
                builder = builder.Append((ResourceId)(int)entry.ResourceType, entry.Id);
            }

            await session.CallAsync((DeleteRecordRequest.IBuilderWithData) builder);
        }
        internal static Func <ISession <PrivateAuthentication>, ITest, Task <IRecordEntries> > CreateRecords(Func <IRequest <CreateRecordRequest, CreateRecordResponse> > requestSupplier)
        {
            return(async(session, test) =>
            {
                var request = requestSupplier();
                var response = await session.CallAsync(request);

                var contentResource = request.Content.Data.ToDictionary(content => content.Id, content => (Enums.ResourceType)(int) content.Resource);

                if (response.Errors.Count > 0)
                {
                    try
                    {
                        if (response.RecordIds.Count > 0)
                        {
                            await session.CallAsync((DeleteRecordRequest.IBuilderWithData) response.RecordIds.Aggregate(ResourceRequest.DeleteRecords(), (delete, entry) => delete.Append((ResourceId)contentResource[entry.Key], entry.Value)));
                        }
                    }
                    catch (Exception)
                    { /* gulp delete errors */ }

                    throw new Exception(response.Errors.Select(c => c.Value.FlatView.Select(entry => $"{entry.Key}: {entry.Value.Message}").Aggregate($"{contentResource[c.Key]}", (a, b) => $"{a},{b}")).Aggregate("Errors were detected during creation of records:", (a, b) => $"{a},{b}"));
                }

                // create reference dict
                var entries = request.Content.References
                              .ToDictionary(entry => entry.Key,
                                            entry => new HrbcRecordReference
                {
                    Id = response.RecordIds[entry.Value],
                    ResourceType = contentResource[entry.Value]
                });
                var guidWithKeys = new HashSet <Guid>(request.Content.References.Values);

                // collect other results
                var other = from record in response.RecordIds
                            where !guidWithKeys.Contains(record.Key)
                            select new HrbcRecordReference {
                    Id = record.Value, ResourceType = contentResource[record.Key]
                };

                return new RecordEntriesImpl(entries, other);
            });
        }