예제 #1
0
        public void CouchbaseRemoteAnalyticsLink_FullEncryption_Validate(string username, string password, string certificate, string clientCert, string clientKey, bool expectValid)
        {
            // full encryption requires Certificate to be set in all cases, and either User+Pass or ClientCert+ClientKey
            var linkInvalid = new CouchbaseRemoteAnalyticsLink("fooLink", "fooVerse", "localhost", new(CouchbaseRemoteAnalyticsLink.EncryptionLevel.Full));

            Assert.Equal("couchbase", linkInvalid.LinkType);
            var isValid = linkInvalid.TryValidateForRequest(out var errors);

            Assert.False(isValid, "link with no user/pass or clientCert/Key should be invalid");
            Assert.NotEmpty(errors);
            Assert.ThrowsAny <ArgumentException>(linkInvalid.ValidateForRequest);

            var link = CouchbaseRemoteAnalyticsLink.WithFullEncryption(
                linkInvalid.Name,
                linkInvalid.Dataverse,
                linkInvalid.Hostname,
                certificate,
                clientCert, clientKey) with
            {
                Username = username,
                Password = password
            };

            Assert.Equal("couchbase", link.LinkType);
            Assert.Equal(expectValid, link.TryValidateForRequest(out var moreErrors));
            if (expectValid)
            {
                Assert.Empty(moreErrors);
            }
            else
            {
                Assert.NotEmpty(moreErrors);
            }
        }
        public async Task AnalyticsIndexes_CreateCouchaseLink_ExpectInvalidArgument()
        {
            var linkName      = nameof(AnalyticsIndexes_CreateCouchaseLink_ExpectInvalidArgument) + Guid.NewGuid().ToString();
            var dataverseName = "default";
            var cluster       = await _fixture.GetCluster().ConfigureAwait(false);

            var manager = cluster.AnalyticsIndexes;
            await manager.CreateDataverseAsync(dataverseName, (new Couchbase.Management.Analytics.CreateAnalyticsDataverseOptions()).IgnoreIfExists(true));

            var link = new CouchbaseRemoteAnalyticsLink(linkName, dataverseName, "127.0.0.1")
                       .WithUsername("no_such_user")
                       .WithPassword("no_such_password");

            var ex = await Assert.ThrowsAsync <InvalidArgumentException>(() => manager.CreateLinkAsync(link));

            _outputHelper.WriteLine(ex.ToString());
        }
        public async Task AnalyticsIndexes_CreatLink_Couchbase()
        {
            // this test is useful for running locally, but outside the scope of normal Combination Tests since they run against a single cluster
            // Make sure you do not commit any real user/password data if you change this locally.
            var otherClusterUserName = "******";
            var otherClusterPassword = "******";
            var otherClusterHostname = "changeme_hostname";
            var linkName             = nameof(AnalyticsIndexes_CreatLink_Couchbase) + Guid.NewGuid().ToString();
            var dataverseName        = "default";
            var cluster = await _fixture.GetCluster().ConfigureAwait(false);

            var manager = cluster.AnalyticsIndexes;
            await manager.CreateDataverseAsync(dataverseName, (new Couchbase.Management.Analytics.CreateAnalyticsDataverseOptions()).IgnoreIfExists(true));

            var link = new CouchbaseRemoteAnalyticsLink(linkName, dataverseName, otherClusterHostname)
                       .WithUsername(otherClusterUserName)
                       .WithPassword(otherClusterPassword);

            await manager.CreateLinkAsync(link);

            _outputHelper.WriteLine($"Create link succeeded for {link}");
        }