public async Task Update_Workspace()
        {
            var workspaceName = "workspace-2";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("Workspace/UpdateWorkspace", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var request = new WorkspacesRequest();

            request.Data.Attributes.Name = workspaceName;

            var result = await client.Workspace.UpdateAsync("organizationName", request);

            Assert.NotNull(result);
            Assert.Equal(workspaceName, result.Data.Attributes.Name);
            Assert.Equal("skierkowski/terraform-test-proj", result.Data.Attributes.VcsRepo.Identifier);
            Assert.Equal("ot-hmAyP66qk2AMVdbJ", result.Data.Attributes.VcsRepo.OauthTokenId);
        }
Beispiel #2
0
        public async Task GetWorkspaceById()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["organizationToken"], httpClient);

            var client = new TfeClient(config);

            var request       = new WorkspacesRequest();
            var workspaceName = $"test-{Guid.NewGuid().ToString()}";

            request.Data.Attributes.Name = workspaceName;

            var createResult = await client.Workspace.CreateAsync(organizationName, request);

            Assert.NotNull(createResult);
            Assert.Equal(workspaceName, createResult.Data.Attributes.Name);

            var showResult = await client.Workspace.GetAsync(createResult.Data.Id);

            Assert.NotNull(showResult);
            Assert.Equal(workspaceName, showResult.Data.Attributes.Name);
            Assert.Equal(createResult.Data.Id, showResult.Data.Id);
            Assert.Equal("workspaces", showResult.Data.Type);
        }
Beispiel #3
0
        public async Task Create_OAuthClient()
        {
            var organizationName = "my-organization";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("OAuthClient/CreateOAuthClient", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var request = new OAuthClientsRequest();

            request.Data.Attributes.ServiceProvider  = "github";
            request.Data.Attributes.HttpUrl          = new Uri("https://github.com");
            request.Data.Attributes.ApiUrl           = new Uri("https://api.github.com");
            request.Data.Attributes.OAuthTokenString = "4306823352f0009d0ed81f1b654ac17a";

            var result = await client.OAuthClient.CreateAsync(organizationName, request);

            Assert.NotNull(result);
            Assert.Equal(organizationName, result.Data.Relationships.Organization.Data.Id);
            Assert.Equal(request.Data.Attributes.ServiceProvider, result.Data.Attributes.ServiceProvider);
            Assert.Equal(request.Data.Attributes.HttpUrl, result.Data.Attributes.HttpUrl);
            Assert.Equal(request.Data.Attributes.ApiUrl, result.Data.Attributes.ApiUrl);
            Assert.Equal("/api/v2/oauth-tokens/ot-KaeqH4cy72VPXFQT", result.Data.Relationships.OAuthTokens.Links.Related);
        }
Beispiel #4
0
        public async Task ApplyRun()
        {
            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["teamToken"], httpClient);
            var client     = new TfeClient(config);

            var runId = IntegrationContext.RunId;

            var ready = false;

            while (!ready)
            {
                await Task.Delay(5000);

                var run = await client.Run.GetAsync(runId);

                ready = run.Data.Attributes.Status == "planned";
            }

            var request = new CommentRequest();

            request.Comment = "Triggered by Integration test";

            await client.Run.ApplyAsync(runId, null);
        }
Beispiel #5
0
        public async Task ListSshKey()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["teamToken"], httpClient);

            var client = new TfeClient(config);

            var request = new SshKeyRequest();
            var keyName = Guid.NewGuid().ToString();

            request.Data.Attributes.Name  = keyName;
            request.Data.Attributes.Value = "-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: DES-EDE3-CBC,AAE00111B021AF6B\n\nda5xh91eoDrnn78JUMjZs3nr+hdp/TBEDSbuJcJJbmF6C7Jrqr5lJiS/dLAcqrfc\nBP6MzBaxwTzvqhvflI2EGqPyhIXsOI1UsBqOWWj2WeFPqvbm40sTFuPX0yt/1fH4\nOtlcWHl8nJea3DUQahgimEoYeSfHar6u1quFi778eVR96/3emqe34mKsNa/iLEVi\nyOi/Uww+gjPJRlUHmE9fy6Rcg8x9ixsO03R1hu7CIx41xxNhgQhDrkH7f4VQceGT\nWyh3IyyzHRnhIJ5QxgKCZGsQzIOol2qQ2P/H8nGo9Ksv6i4GEFdF3Ia6v6yyFKRw\n39GDR+ugH8yBY33uQ1NmCxO4KHn/B61XL6sRFjd5UXTSYB5yickBrTAHLROM16xv\nP5+Sc1t1OpIyvnaNJ7wyR81Ja56MQmviH3R+28VvBN10iqeHaaBWv/B63cV57Dag\nyY3n58ZxH7PaxEZBANCpuBKXHnRmlrZo2QrVxp2q9QidsYi/LpgXX/TA42llglqB\n8js9jjG3XO8FRr4Eik05p0vH7Z7EeHXj+mlRBk1H8zCcap0qHeZweYCnhEfL34rf\nBD30nZDjfhqvtpN8TuY1pNZCNADZflmE1HJAqT3ekMrkVs4o23kGfKactnbxS3WA\nSqvPufZQEdPOWyyxGB5Lnmx2l6uFqI2eiPksiZ7UhOgZIag3gKjWbIELmQg1c707\nX9pXNccwS5njC9UbrteTNBidLZK2hSy0h9jvczzIfm7u6X+D4XP/dQlQZOuwCrWw\nuaV0aSrqiPUiPae4loDIBqQSIXeESUFLIDJcEByy4NJRhsNXRkCVkTLN80yy6Snw\nyjFrHh1iDe/mnbs/Ixl2P57dlHhymEV2+1Chzsxif9oM/Y5vdhyaffTmFaNC0lh+\nlmpWJIUyXM6B/IU7I4c0pFYAFDLHLOpb28sAN9IVFFbv9JXm/9+cGYMWANbrjyuh\nTpErr6D4S8y/t4OpMoDadjON2AO+XQkvIoMYS/RLwU9Y1TZx5oH3bLswAyVZLwKu\nOJFkc1sVht1zb4kK639vjA4E3Hnw40Gj59JynGwZLz2ge2bfqsrdtQ2nSXaPI0LF\n4NH2nBxUKZNuYsuBbgMTCP8l2Fca8oHB3gPZVqlhEuV/Bd7TJwGpMXspgCVqwZGz\noQL5JsA87QmktqnnWSCfZAuIKzsy/QPmgf3xgEZODGKJcHM/oEuResRmeb4vbxiK\nXYvJRo8ESVNWIJrBvsTBiLYPG7XBk5MMHGKPGdkc/T7LSKGbqNEl0HJSUzG+x01i\nNVOw7gYZcUhJIIN6ojCbKv0LJsqQwjN3jUxqBhldRu9XXa+Nng6nXs3B9FUvFof4\nvXf8omfdgKekCx2uIc9aE1Y4uSI43TxOatU71uo2UV12z5Sd4NFWk+SyRK2muNZT\noz0kzxFl2wvH/p//MueGqAIxeJA9or2maefY4VvCnlIQvsA6FWk+6sAXywD78TSf\nWA9xHdBhzYnlm+1g4nlNP4dwz/SRb+2sWZm+IwbfOBlubLJDTRyrusxigZyRB+RN\nGEQCr99gNsBoDtn4rQmY/E7Wm3Br1/jlI5PHdl9rIFHjw8SIn/6Faw==\n-----END RSA PRIVATE KEY-----";

            var result = await client.SshKey.CreateAsync(organizationName, request);

            Assert.NotNull(result);
            Assert.Equal(keyName, result.Data.Attributes.Name);

            var showResult = await client.SshKey.ListAsync(organizationName);

            Assert.NotNull(showResult);
            Assert.Equal(result.Data.Id, showResult.Data[0].Id);
        }
Beispiel #6
0
        public async Task CreateWorkspaceWithVCS()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["organizationToken"], httpClient);

            var client = new TfeClient(config);

            var request       = new WorkspacesRequest();
            var workspaceName = $"test-{Guid.NewGuid().ToString()}";

            request.Data.Attributes.Name                  = workspaceName;
            request.Data.Attributes.VcsRepo               = new RequestVcsRepo();
            request.Data.Attributes.VcsRepo.Identifier    = configuration["repo"];
            request.Data.Attributes.VcsRepo.OauthTokenId  = IntegrationContext.OAuthTokenId;
            request.Data.Attributes.VcsRepo.Branch        = "";
            request.Data.Attributes.VcsRepo.DefaultBranch = true;

            var result = await client.Workspace.CreateAsync(organizationName, request);

            Assert.NotNull(result);
            Assert.Equal(workspaceName, result.Data.Attributes.Name);
            IntegrationContext.WorkspaceId = result.Data.Id;
        }
        public async Task Assign_SSH_Key_To_Workspace()
        {
            var workspaceId = "ws-SihZTyXKfNXUWuUa";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("Workspace/AssignSSHKeyToWorkspace", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var request = new AssignSsshKeyRequest();

            request.Data.Attributes.Id = "sshkey-GxrePWre1Ezug7aM";

            var result = await client.Workspace.AssignSshKeyAsync(workspaceId, request);

            Assert.NotNull(result);
            Assert.Equal(workspaceId, result.Data.Id);
            Assert.Equal(request.Data.Attributes.Id, result.Data.Relationships.SshKey.Data.Id);
        }
        public async Task Create_Workspace_Without_VCS()
        {
            var workspaceName = "workspace-1";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("Workspace/CreateWorkspaceWithoutVCS", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var request = new WorkspacesRequest();

            request.Data.Attributes.Name = workspaceName;

            var result = await client.Workspace.CreateAsync("organizationName", request);

            Assert.NotNull(result);
            Assert.Equal(workspaceName, result.Data.Attributes.Name);
        }
        public async Task List_Workspace()
        {
            var workspaceName = "workspace-2";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("Workspace/ListWorkspace", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var result = await client.Workspace.ListAsync("organizationName");

            Assert.NotNull(result);
            Assert.Equal(3, result.Data.Count());
            Assert.Equal(workspaceName, result.Data[0].Attributes.Name);

            Workspaces.Relationships relationships = result.Data[2].Relationships;

            Relationship latestRun = relationships.LatestRun;

            Assert.Equal("run-1234567890abcdef", latestRun.RelationshipData.Id);
            Assert.Equal("runs", latestRun.RelationshipData.Type);
            Assert.Equal("/api/v2/runs/run-1234567890abcdef", latestRun.Links.Related);

            Relationship currentStateVersion = relationships.CurrentStateVersion;

            Assert.Equal("sv-1234567890abcdef", currentStateVersion.RelationshipData.Id);
            Assert.Equal("state-versions", currentStateVersion.RelationshipData.Type);
            Assert.Equal("/api/v2/workspaces/ws-1234567890abcdef/current-state-version", currentStateVersion.Links.Related);

            Relationship currentConfigurationVersion = relationships.CurrentConfigurationVersion;

            Assert.Equal("cv-1234567890abcdef", currentConfigurationVersion.RelationshipData.Id);
            Assert.Equal("configuration-versions", currentConfigurationVersion.RelationshipData.Type);
            Assert.Equal("/api/v2/configuration-versions/cv-1234567890abcdef", currentConfigurationVersion.Links.Related);

            Relationship currentRun = relationships.CurrentRun;

            Assert.Equal("run-1234567890abcdef", currentRun.RelationshipData.Id);
            Assert.Equal("runs", currentRun.RelationshipData.Type);
            Assert.Equal("/api/v2/runs/run-1234567890abcdef", currentRun.Links.Related);

            Relationship agentPool = relationships.AgentPool;

            Assert.Null(agentPool.RelationshipData);
            Assert.Null(agentPool.Links);

            Relationship readme = relationships.Readme;

            Assert.Equal("12345", readme.RelationshipData.Id);
            Assert.Equal("workspace-readme", readme.RelationshipData.Type);
            Assert.Null(agentPool.Links);
        }
Beispiel #10
0
        private TfeClient GetTestClient(string testFile)
        {
            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse(testFile, entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            return(new TfeClient(config));
        }
Beispiel #11
0
        /// <summary>
        /// TfeClient
        /// </summary>
        /// <param name="config"></param>
        public TfeClient(TfeConfig config)
        {
            this.client = config.HttpClient;

            Apply              = new Apply(client);
            Organization       = new Organization(client);
            SshKey             = new SshKey(client);
            Run                = new Run(client);
            Workspace          = new Workspace(client);
            WorkspaceVariable  = new WorkspaceVariable(client);
            OAuthClient        = new OAuthClient(client);
            StateVersion       = new StateVersion(client);
            StateVersionOutput = new StateVersionOutput(client);
        }
Beispiel #12
0
        /// <summary>
        /// SetupTestWorkspace
        /// </summary>
        /// <returns></returns>
        private async Task <(TfeClient, WorkspaceResponse)> SetupTestWorkspace()
        {
            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["organizationToken"], httpClient);
            var client     = new TfeClient(config);

            var organizationName = configuration["organizationName"];

            var workspaceRequest = new WorkspacesRequest();
            var workspaceName    = $"test-{Guid.NewGuid().ToString()}";

            workspaceRequest.Data.Attributes.Name = workspaceName;

            var workspace = await client.Workspace.CreateAsync(organizationName, workspaceRequest);

            return(client, workspace);
        }
Beispiel #13
0
        public async Task AssignSshKeyToWorkSpace()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["teamToken"], httpClient);

            var client = new TfeClient(config);

            var request = new AssignSsshKeyRequest();

            request.Data.Attributes.Id = IntegrationContext.SshKeyId;

            var result = await client.Workspace.AssignSshKeyAsync(IntegrationContext.WorkspaceId, request);

            Assert.NotNull(result);
            Assert.Equal(IntegrationContext.SshKeyId, result.Data.Relationships.SshKey.Data.Id);
        }
        public async Task Get_OAuthToken()
        {
            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("OAuthToken/GetOAuthToken", entry);
                }
            };

            var oauthTokenId = "ot-29t7xkUKiNC2XasL";
            var config       = new TfeConfig("faketoken", httpClient);
            var client       = new TfeClient(config);
            var result       = await client.OAuthToken.GetAsync(oauthTokenId);

            Assert.NotNull(result);
            Assert.Equal(oauthTokenId, result.Data.Id);
        }
Beispiel #15
0
        public async Task CreateWorkspaceVariables()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["teamToken"], httpClient);

            var client = new TfeClient(config);

            await CreateWorkspaceVariable("your_name", "cmendibl3", "your name", false, client);
            await CreateWorkspaceVariable("tfe_org_name", organizationName, "tfe_org_name", false, client);
            await CreateWorkspaceVariable("tfe_host", "app.terraform.io", "tfe_host", false, client);
            await CreateWorkspaceVariable("tfe_workspace_name", "test-workspace-github", "tfe_workspace_name", false, client);
            await CreateWorkspaceVariable("ARM_CLIENT_ID", configuration["ARM_CLIENT_ID"], "ARM_CLIENT_ID", true, client);
            await CreateWorkspaceVariable("ARM_CLIENT_SECRET", configuration["ARM_CLIENT_SECRET"], "ARM_CLIENT_SECRET", true, client);
            await CreateWorkspaceVariable("ARM_SUBSCRIPTION_ID", configuration["ARM_SUBSCRIPTION_ID"], "ARM_SUBSCRIPTION_ID", true, client);
            await CreateWorkspaceVariable("ARM_TENANT_ID", configuration["ARM_TENANT_ID"], "ARM_TENANT_ID", true, client);
        }
Beispiel #16
0
        public async Task Get_OAuthClient()
        {
            var oauthClientId = "oc-XKFwG6ggfA9n7t1K";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("OAuthClient/GetOAuthClient", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var result = await client.OAuthClient.GetAsync(oauthClientId);

            Assert.NotNull(result);
            Assert.Equal(oauthClientId, result.Data.Id);
        }
Beispiel #17
0
        public async Task CreateRun()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["teamToken"], httpClient);

            var client = new TfeClient(config);

            var request = new RunsRequest();

            request.Data.Attributes.IsDestroy = false;
            request.Data.Attributes.Message   = "Triggered by Integration Test";
            request.Data.Relationships.Workspace.Data.Type = "workspaces";
            request.Data.Relationships.Workspace.Data.Id   = IntegrationContext.WorkspaceId;

            var result = await client.Run.CreateAsync(request);

            Assert.NotNull(result);
            IntegrationContext.RunId = result.Data.Id;
        }
Beispiel #18
0
        public async Task CreateOAuthClient()
        {
            var organizationName = configuration["organizationName"];

            var httpClient = new HttpClient();
            var config     = new TfeConfig(configuration["teamToken"], httpClient);

            var client = new TfeClient(config);

            var request = new OAuthClientsRequest();

            request.Data.Attributes.ServiceProvider  = "github";
            request.Data.Attributes.HttpUrl          = new Uri("https://github.com");
            request.Data.Attributes.ApiUrl           = new Uri("https://api.github.com");
            request.Data.Attributes.OAuthTokenString = configuration["gitToken"];

            var result = await client.OAuthClient.CreateAsync(organizationName, request);

            Assert.NotNull(result);
            IntegrationContext.OAuthTokenId = result.Data.Relationships.OAuthTokens.Data[0].Id;
        }
        public async Task Get_Workspace()
        {
            var workspaceId = "ws-mD5bmJ8ry3uTzuHi";

            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("Workspace/GetWorkspace", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var result = await client.Workspace.GetAsync(workspaceId);

            Assert.NotNull(result);
            Assert.Equal(workspaceId, result.Data.Id);
        }
Beispiel #20
0
        public async Task List_OAuthClient()
        {
            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("OAuthClient/ListOAuthClient", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var organizationName = "my-organization";
            var result           = await client.OAuthClient.ListAsync(organizationName);

            Assert.NotNull(result);
            Assert.Single(result.Data);
            Assert.Equal("oc-XKFwG6ggfA9n7t1K", result.Data[0].Id);
            Assert.Equal(organizationName, result.Data[0].Relationships.Organization.Data.Id);
        }
        public async Task List_OAuthToken()
        {
            var httpClient = new TestHttpClient()
            {
                Handler = (entry) =>
                {
                    TestHttpClient.SendResponse("OAuthToken/ListOAuthTokens", entry);
                }
            };

            var config = new TfeConfig("faketoken", httpClient);

            var client = new TfeClient(config);

            var oauthclientid = "oc-GhHqb5rkeK19mLB8";
            var result        = await client.OAuthToken.ListAsync(oauthclientid);

            Assert.NotNull(result);
            Assert.Single(result.Data);
            Assert.Equal("ot-hmAyP66qk2AMVdbJ", result.Data[0].Id);
            Assert.Equal(oauthclientid, result.Data[0].Relationships.OAuthClient.OauthClientData.Id);
        }