/// <summary>
        /// Helper method that validates any type of resource details passed
        /// </summary>
        /// <param name="resourceDetails"></param>
        private static void ValidateResourceDetails(ResourceDetails resourceDetails)
        {
            Assert.NotNull(resourceDetails);

            switch (resourceDetails)
            {
            case AzureResourceDetails azureResourceDetails:
                Assert.NotNull(azureResourceDetails);
                Assert.NotNull(azureResourceDetails.Id);
                break;

            case OnPremiseSqlResourceDetails onPremiseSqlResourceDetails:
                Assert.NotNull(onPremiseSqlResourceDetails);
                Assert.NotNull(onPremiseSqlResourceDetails.MachineName);
                Assert.NotNull(onPremiseSqlResourceDetails.SourceComputerId);
                Assert.NotNull(onPremiseSqlResourceDetails.Vmuuid);
                Assert.NotNull(onPremiseSqlResourceDetails.WorkspaceId);
                Assert.NotNull(onPremiseSqlResourceDetails.DatabaseName);
                Assert.NotNull(onPremiseSqlResourceDetails.ServerName);
                break;

            case OnPremiseResourceDetails onPremiseResourceDetails:
                Assert.NotNull(onPremiseResourceDetails);
                Assert.NotNull(onPremiseResourceDetails.MachineName);
                Assert.NotNull(onPremiseResourceDetails.SourceComputerId);
                Assert.NotNull(onPremiseResourceDetails.Vmuuid);
                Assert.NotNull(onPremiseResourceDetails.WorkspaceId);
                break;

            default:
                throw new Exception("Unsupported resource details");
            }
        }
        public async Task GivenACompanyHouseSearchClient_WhenSearchingForAOfficer()
        {
            var fixture = new Fixture();
            var items   = fixture.Build <Item>()
                          .With(x => x.Kind, "searchresults#officer")
                          .CreateMany().ToArray();

            _resourceDetails = fixture.Build <ResourceDetails>()
                               .With(x => x.Officers, items)
                               .Create();

            var uri = new Uri("https://wibble.com/search/companies");

            var resource = new OfficerSearchResourceBuilder()
                           .CreateResource(_resourceDetails);

            HttpMessageHandler handler = new StubHttpMessageHandler(uri, resource);

            var uriBuilder = new Mock <ISearchUriBuilder>();

            uriBuilder.Setup(x => x.Build(It.IsAny <SearchRequest>()))
            .Returns(uri);

            var uriBuilderFactory = new Mock <ISearchUriBuilderFactory>();

            uriBuilderFactory.Setup(x => x.Create <OfficerSearch>())
            .Returns(uriBuilder.Object);

            _client = new CompaniesHouseSearchClient(new HttpClient(handler), uriBuilderFactory.Object);

            _result = await _client.SearchAsync <OfficerSearch>(new SearchRequest());
        }
        private RsaKeyParameters ReadPrivateKey(ResourceDetails privateKeyResourceDetails, char[] privateKeyPassphrase)
        {
            if (privateKeyResourceDetails == null || privateKeyResourceDetails.Uri == null)
            {
                return(null);
            }
            logger.Info("reading the private key");
            var requestMsg = new HttpRequestMessage(HttpMethod.Get, privateKeyResourceDetails.Uri);

            foreach (KeyValuePair <string, string> entry in privateKeyResourceDetails.Headers)
            {
                requestMsg.Headers.TryAddWithoutValidation(entry.Key, entry.Value);
            }

            var response = Client.SendAsync(requestMsg).Result;

            if (response == null || !response.IsSuccessStatusCode)
            {
                logger.Debug("Received non successful response while trying to get the private key");
                ResponseHelper.HandleNonSuccessfulResponse(response);
            }

            var    stream = response.Content.ReadAsStreamAsync().Result;
            string privateKeyPassphraseToUse = null;

            if (privateKeyPassphrase != null && privateKeyPassphrase.Length > 0)
            {
                privateKeyPassphraseToUse = privateKeyPassphrase.ToString();
            }
            return(GetKey(stream, StringUtils.StringToSecureString(privateKeyPassphraseToUse)));
        }
        public async Task <IActionResult> PutResourceDetails(int id, ResourceDetails resourceDetails)
        {
            if (id != resourceDetails.ResID)
            {
                return(BadRequest());
            }

            _context.Entry(resourceDetails).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ResourceDetailsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 5
0
        public Task <TResource> GetOrAdd(StringSegment databaseName, Task <TResource> task)
        {
            if (_caseSensitive.TryGetValue(databaseName, out Task <TResource> value))
            {
                return(value);
            }

            if (_caseInsensitive.TryGetValue(databaseName, out value))
            {
                return(value);
            }

            lock (this)
            {
                if (_caseInsensitive.TryGetValue(databaseName, out value))
                {
                    return(value);
                }

                value = _caseInsensitive.GetOrAdd(databaseName, task);
                if (value == task)
                {
                    _resourceDetails[task] = new ResourceDetails
                    {
                        InCacheSince = DateTime.UtcNow
                    };
                }
                _caseSensitive[databaseName] = value;
                _mappings[databaseName]      = new ConcurrentSet <StringSegment>
                {
                    databaseName
                };
                return(value);
            }
        }
Esempio n. 6
0
        public Task <TResource> Replace(string databaseName, Task <TResource> task)
        {
            lock (this)
            {
                Task <TResource> existingTask = null;
                _caseInsensitive.AddOrUpdate(databaseName, segment => task, (key, existing) =>
                {
                    existingTask = existing;
                    return(task);
                });

                ResourceDetails details = null;
                if (existingTask != null)
                {
                    _resourceDetails.TryRemove(existingTask, out details);
                }

                _resourceDetails[task] = details ?? new ResourceDetails {
                    InCacheSince = SystemTime.UtcNow
                };

                if (_mappings.TryGetValue(databaseName, out ConcurrentSet <StringSegment> mappings))
                {
                    foreach (var mapping in mappings)
                    {
                        _caseSensitive.TryRemove(mapping, out Task <TResource> _);
                    }
                }
                return(existingTask);
            }
        }
        public async Task <ActionResult <ResourceDetails> > PostResourceDetails(ResourceDetails resourceDetails)
        {
            _context.ResourceDetails.Add(resourceDetails);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetResourceDetails", new { id = resourceDetails.ResID }, resourceDetails));
        }
 public URLBasedX509CertificateSupplier(
     ResourceDetails certificateResourceDetails,
     ResourceDetails privateKeyResourceDetails,
     char[] privateKeyPassphraseCharacters)
 {
     this.certificateDetails             = certificateResourceDetails;
     this.privateKeyDetails              = privateKeyResourceDetails;
     this.privateKeyPassphraseCharacters = privateKeyPassphraseCharacters;
 }
        public void HandlerCalledWithParams_GetsResourceDetails()
        {
            var details = new ResourceDetails();

            _mockDiscoverer.Setup(x => x.GetResouceDetails("path")).Returns(details);

            var response = _handler.Get("path");

            Assert.That(response, Is.EqualTo(details));
        }
Esempio n. 10
0
        public static PSSecurityResourceDetails ConvertToPSType(this ResourceDetails value)
        {
            if (value is AzureResourceDetails details)
            {
                return(new PSSecurityAzureResourceDetails()
                {
                    Source = "Azure",
                    Id = details.Id
                });
            }

            return(new PSSecurityResourceDetails()
            {
                Source = "Unknown"
            });
        }
Esempio n. 11
0
        public string CreateResource(ResourceDetails companySearch)
        {
            var resource =
                $@"{{
   ""etag"": ""{companySearch.ETag}"",
   ""items"" : [
      {string.Join(", ", _itemBlocks)}
   ],
   ""items_per_page"" : {companySearch.ItemsPerPage},
   ""kind"" : ""{companySearch.Kind}"",
   ""page_number"" : {companySearch.PageNumber},
   ""start_index"" : {companySearch.StartIndex},
   ""total_results"" : {companySearch.TotalResults}
}}";

            return(resource);
        }
Esempio n. 12
0
        public void GivenACompanyHouseSearchCompanyClient_WhenSearchingForACompany()
        {
            var fixture = new Fixture();

            _resourceDetails   = fixture.Create <ResourceDetails>();
            _expectedCompanies = new List <CompanyDetails>
            {
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "active").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "dissolved").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "liquidation").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "receivership").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "administration").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "voluntary-arrangement").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "converted-closed").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "insolvency-proceedings").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "open").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "closed").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "closed-on").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
                //fixture.Build<CompanyDetails>().With(x => x.CompanyStatus, null).With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create(),
            };

            var uri = new Uri("https://wibble.com/search/companies");

            _companyWithUnknownDateOfCessation = fixture.Build <CompanyDetails>().With(x => x.CompanyStatus, "insolvency-proceedings").With(x => x.CompanyType, "private-unlimited").With(x => x.Kind, "searchresults#company").Create();
            var resource = new CompanySearchResourceBuilder()
                           .AddCompanies(_expectedCompanies)
                           .AddCompanyWithUnknownDateOfCessation(_companyWithUnknownDateOfCessation)
                           .CreateResource(_resourceDetails);

            HttpMessageHandler handler = new StubHttpMessageHandler(uri, resource);

            var uriBuilder = new Mock <ISearchUriBuilder>();

            uriBuilder.Setup(x => x.Build(It.IsAny <SearchRequest>()))
            .Returns(uri);

            var uriBuilderFactory = new Mock <ISearchUriBuilderFactory>();

            uriBuilderFactory.Setup(x => x.Create <CompanySearch>())
            .Returns(uriBuilder.Object);

            _client = new CompaniesHouseSearchClient(new HttpClient(handler), uriBuilderFactory.Object);

            _result = _client.SearchAsync <CompanySearch>(new SearchRequest()).Result;
        }
        private static ResourceDetails GetReourceDetails(ResourceManagementClient client, string resourceId, TraceWriter log)
        {
            var details = new ResourceDetails();

            var bits = resourceId.Split('/');

            details.ResourceGroupName = bits[4];
            string providerName     = bits[6];
            var    resourceTypeName = bits[7];
            var    resourceName     = bits[8];

            var resourceProvider     = client.Providers.Get(providerName);
            var resourceProviderType = resourceProvider.Provider.ResourceTypes.Where(pt => pt.Name.ToLower() == resourceTypeName.ToLower()).Single();
            var latestApi            = resourceProviderType.ApiVersions.First();

            details.ResourceIdentity = new ResourceIdentity(resourceName, providerName + "/" + resourceTypeName, latestApi);
            return(details);
        }
        public ActionResult ResourceDetails(int id)
        {
            var RDetails = new ResourceDetails();

            _resources            = dbOperations.GetResources();
            _employees            = dbOperations.GetEmployees();
            _projects             = dbOperations.GetProjects();
            RDetails.reservations = dbOperations.GetResourcesReservation(id);
            RDetails.resource     = _resources.Find(s => s.ResourceId == id);
            RDetails.employees    = new List <EMPLOYEES>();
            RDetails.projects     = new List <PROJECTS>();

            foreach (var reservation in RDetails.reservations)
            {
                RDetails.employees.Add(_employees.Where(s => s.EmployeeId == reservation.EmployeeId).FirstOrDefault());
                RDetails.projects.Add(_projects.Where(s => s.ProjectCode == reservation.ProjectCode).FirstOrDefault());
            }

            return(View(RDetails));
        }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (ResourceDetails == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "ResourceDetails");
     }
     if (ResourceDetails != null)
     {
         ResourceDetails.Validate();
     }
     if (PendingFields != null)
     {
         foreach (var element in PendingFields)
         {
             if (element != null)
             {
                 element.Validate();
             }
         }
     }
 }
        private X509Certificate2 ReadRawCertificate(ResourceDetails certificateDetails)
        {
            logger.Info("reading the raw certificate");
            var requestMsg = new HttpRequestMessage(HttpMethod.Get, certificateDetails.Uri);

            foreach (KeyValuePair <string, string> entry in certificateDetails.Headers)
            {
                requestMsg.Headers.TryAddWithoutValidation(entry.Key, entry.Value);
            }

            var response = Client.SendAsync(requestMsg).Result;

            if (response == null || !response.IsSuccessStatusCode)
            {
                logger.Debug("Received non successful response while trying to get the raw certificate");
                ResponseHelper.HandleNonSuccessfulResponse(response);
            }

            var certificateString = response.Content.ReadAsStringAsync().Result;
            var certificateBytes  = Encoding.UTF8.GetBytes(certificateString);

            return(new X509Certificate2(certificateBytes));
        }
Esempio n. 17
0
        public bool TryGetValue(StringSegment resourceName, out Task <TResource> resourceTask, out ResourceDetails details)
        {
            details = null;
            if (TryGetValue(resourceName, out resourceTask) == false)
            {
                return(false);
            }

            return(_resourceDetails.TryGetValue(resourceTask, out details));
        }
Esempio n. 18
0
        public ResourceDetails GetResouceDetails(string groupPath)
        {
            var swaggerSpec = new ResourceDetails
            {
                swaggerVersion = "1.2",
                apiVersion     = Assembly.GetCallingAssembly().GetName().Version.ToString(),
                apis           = new List <ApiDetails>(),
                resourcePath   = "/",
                basePath       = "/"
            };

            var groupOperations =
                Operations().Where(x => x.Group.Path.Equals(groupPath, StringComparison.InvariantCultureIgnoreCase));

            var typeMapper = new TypeMapper();

            foreach (var operationMetadata in groupOperations)
            {
                var mappedReturnType = typeMapper.Register(operationMetadata.ReturnType);

                var op = new Operation
                {
                    uri              = operationMetadata.Uri.Uri,
                    method           = operationMetadata.HttpVerb,
                    nickname         = operationMetadata.Nickname ?? "",
                    notes            = operationMetadata.Notes ?? "",
                    type             = mappedReturnType.Type,
                    items            = mappedReturnType.Items,
                    summary          = operationMetadata.Summary ?? "",
                    parameters       = new List <Parameter>(),
                    responseMessages = new List <Responsemessage>()
                };

                foreach (var header in SwaggerGenerator.Configuration.Headers)
                {
                    op.parameters.Add(new Parameter
                    {
                        paramType   = "header",
                        name        = header.Name,
                        required    = true,
                        description = header.SuggestedValue,
                        type        = "string",
                        minimum     = 1,
                        maximum     = 1
                    });
                }

                foreach (var param in operationMetadata.InputParameters)
                {
                    var swagParam = typeMapper.Map(param);
                    swagParam.paramType = param.LocationType.ToString().ToLower();
                    op.parameters.Add(swagParam);
                }

                foreach (var code in operationMetadata.ResponseCodes)
                {
                    op.responseMessages.Add(new Responsemessage {
                        code = code.StatusCode, message = code.Description
                    });
                }

                swaggerSpec.apis.Add(new ApiDetails
                {
                    description = operationMetadata.Summary,
                    path        = operationMetadata.UriParser.Path,
                    operations  = new List <Operation> {
                        op
                    }
                });
            }

            foreach (var item in typeMapper.Models)
            {
                swaggerSpec.models.Add(item.id, item);
            }

            return(swaggerSpec);
        }