private static void MapRow(IDataRecord record, ICollection <GetWhitelistEntriesResultItem> items,
                                   IDictionary <int, List <GetWhitelistEntriesResultItemApp> > appMap)
        {
            var item = items.FirstOrDefault(x => x.Id == record.GetInt32(0));

            if (item == null)
            {
                item = new GetWhitelistEntriesResultItem
                {
                    Id         = record.GetInt32(0),
                    DomainName = (string)record["DomainName"]
                };
                items.Add(item);
                appMap[item.Id] = new List <GetWhitelistEntriesResultItemApp>();
            }

            var appIdValue = record["ApplicationId"];

            if (appIdValue is DBNull)
            {
                return;
            }

            var app = new GetWhitelistEntriesResultItemApp
            {
                ApplicationId = (int)appIdValue,
                Name          = (string)record["ApplicationName"]
            };

            appMap[item.Id].Add(app);
        }
        private async Task <GetWhitelistEntriesResultItem> GetEntry(
            Func <GetWhitelistEntriesResultItem, bool> filter = null)
        {
            GetWhitelistEntriesResultItem entry = null;

            async Task <bool> DoQuery()
            {
                var query  = new GetWhitelistEntries();
                var result = await _apiClient.QueryAsync(query);

                if (filter == null)
                {
                    entry = result.Entries?.LastOrDefault();
                    return(true);
                }

                foreach (var item in result.Entries)
                {
                    if (!filter(item))
                    {
                        return(false);
                    }

                    entry = item;
                    return(true);
                }

                return(false);
            }

            if (!await ActionExtensions.Retry(DoQuery))
            {
                throw new TestFailedException("Whitelist entry was not found.");
            }

            return(entry);
        }