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}"); }