public void Constructor_ParsesCorrectly(string connectionString, string expectedUri, string expectedKey) { // Act var docDBConnStr = new DocumentDBConnectionString(connectionString); // Assert if (expectedUri == null) { Assert.Null(docDBConnStr.ServiceEndpoint); } else { Assert.Equal(expectedUri, docDBConnStr.ServiceEndpoint.ToString()); } Assert.Equal(expectedKey, docDBConnStr.AuthKey); }
public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { // Tries to parse the context parameters and see if it belongs to this [CosmosDBTrigger] binder if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; CosmosDBTriggerAttribute attribute = parameter.GetCustomAttribute <CosmosDBTriggerAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <ITriggerBinding>(null)); } DocumentCollectionInfo documentCollectionLocation; DocumentCollectionInfo leaseCollectionLocation; ChangeFeedHostOptions leaseHostOptions = ResolveLeaseOptions(attribute); try { string triggerConnectionString = ResolveAttributeConnectionString(attribute); DocumentDBConnectionString triggerConnection = new DocumentDBConnectionString(triggerConnectionString); if (triggerConnection.ServiceEndpoint == null) { throw new InvalidOperationException("The connection string for the monitored collection is in an invalid format, please use AccountEndpoint=XXXXXX;AccountKey=XXXXXX;."); } DocumentDBConnectionString leasesConnection = new DocumentDBConnectionString(ResolveAttributeLeasesConnectionString(attribute, triggerConnectionString)); if (triggerConnection.ServiceEndpoint == null) { throw new InvalidOperationException("The connection string for the leases collection is in an invalid format, please use AccountEndpoint=XXXXXX;AccountKey=XXXXXX;."); } documentCollectionLocation = new DocumentCollectionInfo { Uri = triggerConnection.ServiceEndpoint, MasterKey = triggerConnection.AuthKey, DatabaseName = attribute.DatabaseName, CollectionName = attribute.CollectionName }; leaseCollectionLocation = new DocumentCollectionInfo { Uri = leasesConnection.ServiceEndpoint, MasterKey = leasesConnection.AuthKey, DatabaseName = attribute.LeaseDatabaseName, CollectionName = attribute.LeaseCollectionName }; if (documentCollectionLocation.Uri.Equals(leaseCollectionLocation.Uri) && documentCollectionLocation.DatabaseName.Equals(leaseCollectionLocation.DatabaseName) && documentCollectionLocation.CollectionName.Equals(leaseCollectionLocation.CollectionName)) { throw new InvalidOperationException("The monitored collection cannot be the same as the collection storing the leases."); } } catch (Exception ex) { throw new InvalidOperationException(string.Format("Cannot create Collection Information for {0} in database {1} with lease {2} in database {3} : {4}", attribute.CollectionName, attribute.DatabaseName, attribute.LeaseCollectionName, attribute.LeaseDatabaseName, ex.Message), ex); } return(Task.FromResult <ITriggerBinding>(new CosmosDBTriggerBinding(parameter, documentCollectionLocation, leaseCollectionLocation, leaseHostOptions))); }
public DocumentDBService(string connectionString) { DocumentDBConnectionString connection = new DocumentDBConnectionString(connectionString); _client = new DocumentClient(connection.ServiceEndpoint, connection.AuthKey); }