Ejemplo n.º 1
0
        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"
            };
        }
Ejemplo n.º 2
0
        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"));
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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"
            };
        }
Ejemplo n.º 7
0
        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();
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 11
0
        /// <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"));
        }
Ejemplo n.º 12
0
        /// <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);
 }