public void BaseSetup() { LogOutput = new StringBuilder(); Log = new LoggerConfiguration() .WriteTo.TextWriter(new StringWriter(LogOutput), outputTemplate: "{Message}{NewLine}{Exception}", formatProvider: new StringFormatter(null)) .CreateLogger(); RootResource rootDocument = Substitute.For <RootResource>(); rootDocument.ApiVersion = "2.0"; rootDocument.Version = "2.0"; rootDocument.Links.Add("Tenants", "http://tenants.org"); Repository = Substitute.For <IOctopusAsyncRepository>(); Repository.Client.RootDocument.Returns(rootDocument); ClientFactory = Substitute.For <IOctopusClientFactory>(); RepositoryFactory = Substitute.For <IOctopusAsyncRepositoryFactory>(); RepositoryFactory.CreateRepository(null).ReturnsForAnyArgs(Repository); FileSystem = Substitute.For <IOctopusFileSystem>(); CommandOutputProvider = new CommandOutputProvider(Log); CommandLineArgs = new List <string> { "--server=http://the-server", "--apiKey=ABCDEF123456789" }; }
public void BaseSetup() { Log = Substitute.For <ILogger>(); RootResource rootDocument = Substitute.For <RootResource>(); rootDocument.ApiVersion = "2.0"; rootDocument.Version = "2.0"; rootDocument.Links.Add("Tenants", "http://tenants.org"); Repository = Substitute.For <IOctopusRepository>(); Repository.Client.RootDocument.Returns(rootDocument); RepositoryFactory = Substitute.For <IOctopusRepositoryFactory>(); RepositoryFactory.CreateRepository(null).ReturnsForAnyArgs(Repository); FileSystem = Substitute.For <IOctopusFileSystem>(); CommandLineArgs = new List <string> { "--server=http://the-server", "--apiKey=ABCDEF123456789" }; }
public static bool UsePostForChannelVersionRuleTest(this RootResource source) { // Assume octo.exe 3.4 should use the OctopusServer 3.4 POST, otherwise if we're certain this is an older Octopus Server use the GET method SemanticVersion octopusServerVersion; return(source == null || !SemanticVersion.TryParse(source.Version, out octopusServerVersion) || octopusServerVersion >= new SemanticVersion("3.4")); }
/// <summary> /// Requests a fresh root document from the Octopus Server which can be useful if the API surface has changed. This can occur when enabling/disabling features, or changing license. /// </summary> /// <returns>A fresh copy of the root document.</returns> public RootResource RefreshRootDocument() { var root = Get <RootResource>("~/api"); lock (rootDocumentLock) { rootDocument = root; } return(rootDocument); }
public IActionResult GetRoot() { var response = new RootResource { Self = Link.To(nameof(GetRoot)), Conversations = Link.ToCollection(nameof(FinancialJourneyController.GetConversationsAsync)), Comments = Link.ToCollection(nameof(CustomerController.GetCommentsAsync)) }; return(Ok(response)); }
public void BaseSetup() { LogOutput = new StringBuilder(); Log = new LoggerConfiguration() .WriteTo.TextWriter(new StringWriter(LogOutput), outputTemplate: "{Message}{NewLine}{Exception}", formatProvider: new StringFormatter(null)) .CreateLogger(); RootResource rootDocument = Substitute.For <RootResource>(); rootDocument.ApiVersion = "2.0"; rootDocument.Version = "2.0"; rootDocument.Links.Add("Tenants", "http://tenants.org"); Repository = Substitute.For <IOctopusAsyncRepository>(); Repository.LoadRootDocument().Returns(rootDocument); Repository.HasLink("Spaces").Returns(true); Repository.HasLink(Arg.Is <string>(arg => arg != "Spaces")).Returns(async call => (await Repository.LoadRootDocument()).HasLink(call.Arg <string>())); Repository.Link(Arg.Any <string>()).Returns(async call => (await Repository.LoadRootDocument()).Link(call.Arg <string>())); Repository.Machines.FindByNames(Arg.Any <IEnumerable <string> >(), Arg.Any <string>(), Arg.Any <object>()) .Returns(new List <MachineResource>()); Repository.Environments.FindByNames( Arg.Is <List <string> >(arg => arg.TrueForAll(arg2 => arg2 == ValidEnvironment)), Arg.Any <string>(), Arg.Any <object>()) .Returns(new List <EnvironmentResource>() { new EnvironmentResource() { Name = ValidEnvironment } }); Repository.Environments.FindByNames( Arg.Is <List <string> >(arg => arg.TrueForAll(arg2 => arg2 != ValidEnvironment)), Arg.Any <string>(), Arg.Any <object>()) .Returns(new List <EnvironmentResource>()); ClientFactory = Substitute.For <IOctopusClientFactory>(); RepositoryFactory = Substitute.For <IOctopusAsyncRepositoryFactory>(); RepositoryFactory.CreateRepository(null).ReturnsForAnyArgs(Repository); FileSystem = Substitute.For <IOctopusFileSystem>(); CommandOutputProvider = new CommandOutputProvider(Log); CommandLineArgs = new List <string> { "--server=http://the-server", "--apiKey=ABCDEF123456789" }; }
public IActionResult GetRoot() { var response = new RootResource { Self = Link.Create(nameof(GetRoot)), Albums = Link.Create(nameof(AlbumsController.GetAlbums)), Artists = Link.Create(nameof(ArtistsController.GetArtists)) }; return(Ok(response)); }
public HealthStatusProvider(IOctopusAsyncRepository repository, HashSet <MachineModelStatus> statuses, HashSet <MachineModelHealthStatus> healthStatuses, ICommandOutputProvider commandOutputProvider, RootResource rootDocument) { this.statuses = statuses; this.healthStatuses = healthStatuses; this.commandOutputProvider = commandOutputProvider; IsHealthStatusPendingDeprication = new SemanticVersion(rootDocument.Version).Version >= new SemanticVersion("3.4.0").Version; ValidateOptions(); }
private void btnLoadResources_Click(object sender, EventArgs e) { var resourceFile = servicesPath + "\\resourceService.settings.json"; RootResource r = JsonConvert.DeserializeObject <Constants <RootResource> >(File.ReadAllText(resourceFile)).Config; resourceList.Nodes.Clear(); foreach (var o in r.ResourceTypes) { var node = resourceList.Nodes.Add(o.Key); var resource = o.Value; resource.AddNodes(node); } }
public void SetUp() { clientFactory = Substitute.For <IOctopusClientFactory>(); client = Substitute.For <IOctopusAsyncClient>(); clientFactory.CreateAsyncClient(Arg.Any <OctopusServerEndpoint>()).Returns(client); operation = new RegisterMachineOperation(clientFactory); serverEndpoint = new OctopusServerEndpoint("http://octopus", "ABC123"); environments = new ResourceCollection <EnvironmentResource>(new EnvironmentResource[0], LinkCollection.Self("/foo")); machines = new ResourceCollection <MachineResource>(new MachineResource[0], LinkCollection.Self("/foo")); machinePolicies = new ResourceCollection <MachinePolicyResource>(new MachinePolicyResource[0], LinkCollection.Self("/foo")); var rootDocument = new RootResource { ApiVersion = "3.0.0", Version = "2099.0.0", Links = LinkCollection.Self("/api") .Add("Environments", "/api/environments") .Add("Machines", "/api/machines") .Add("MachinePolicies", "/api/machinepolicies") .Add("CurrentUser", "/api/users/me") .Add("SpaceHome", "/api/spaces") }; client.Get <RootResource>(Arg.Any <string>()).Returns(rootDocument); client.Repository.LoadRootDocument().Returns(rootDocument); client.Get <SpaceResource[]>(Arg.Any <string>()) .Returns(new[] { new SpaceResource() { Id = "Spaces-1", IsDefault = true } }); client.Get <UserResource>(Arg.Any <string>()).Returns(new UserResource() { Links = { { "Spaces", "" } } }); client.Repository.HasLink(Arg.Any <string>()).Returns(ci => rootDocument.HasLink(ci.Arg <string>())); client.Repository.Link(Arg.Any <string>()).Returns(ci => rootDocument.Link(ci.Arg <string>())); client.When(x => x.Paginate(Arg.Any <string>(), Arg.Any <object>(), Arg.Any <Func <ResourceCollection <EnvironmentResource>, bool> >())) .Do(ci => ci.Arg <Func <ResourceCollection <EnvironmentResource>, bool> >()(environments)); client.When(x => x.Paginate(Arg.Any <string>(), Arg.Any <object>(), Arg.Any <Func <ResourceCollection <MachineResource>, bool> >())) .Do(ci => ci.Arg <Func <ResourceCollection <MachineResource>, bool> >()(machines)); client.When(x => x.Paginate(Arg.Any <string>(), Arg.Any <object>(), Arg.Any <Func <ResourceCollection <MachinePolicyResource>, bool> >())) .Do(ci => ci.Arg <Func <ResourceCollection <MachinePolicyResource>, bool> >()(machinePolicies)); client.List <MachineResource>(Arg.Any <string>(), Arg.Any <object>()).Returns(machines); }
/// <summary> /// Helper method to create a Resource Provider Resource. /// </summary> /// <param name="subscriptionId">The Subscription Id.</param> /// <param name="resourceGroup">The resource group name.</param> /// <param name="resourceName">The name of the resource.</param> private static ResourceDefinition CreateRootResourceDefinition( string subscriptionId, string resourceGroup, string resourceName) { string displayName = string.Format(CultureInfo.InvariantCulture, "The {0} root resource.", resourceName); var rootResourceEntity = new RootResource() { DisplayName = displayName }; return(new ResourceDefinition( resourceIdentifier: ResourceGroupWideResourceIdentifier.CreateValidatedResourceGroupWideResourceIdentifier( subscriptionId: subscriptionId, resourceGroupName: resourceGroup, resourceTypeName: new ResourceTypeName(ManifestFactory.Namespace, ManifestFactory.RootResourceTypeName), resourceName: new ResourceName(resourceName)), properties: rootResourceEntity.ToJToken(), location: "DefaultLocation")); }
/// <summary> /// Requests a fresh root document from the Octopus Server which can be useful if the API surface has changed. This can occur when enabling/disabling features, or changing license. /// </summary> /// <returns>A fresh copy of the root document.</returns> public async Task <RootResource> RefreshRootDocument() { RootDocument = await Get <RootResource>("~/api").ConfigureAwait(false); return(RootDocument); }
public static bool SupportsTenants(this RootResource source) { return(source?.HasLink("Tenants") == true); }
public static bool SupportsChannels(this RootResource source) { return(source?.HasLink("Channels") == true); }