/// <summary> /// Create an instance of <see cref="ArangoDBClient"/> from an existing /// <see cref="IApiClientTransport"/> instance. /// </summary> /// <param name="transport">The ArangoDB transport layer implementation.</param> public ArangoDBClient(IApiClientTransport transport) { _transport = transport; Cursor = new CursorApiClient(_transport); Database = new DatabaseApiClient(_transport); Document = new DocumentApiClient(_transport); Collection = new CollectionApiClient(_transport); Transaction = new TransactionApiClient(_transport); Graph = new GraphApiClient(_transport); }
/// <summary> /// Create an instance of <see cref="ArangoDBClient"/> from an existing /// <see cref="HttpClient"/> instance. /// </summary> /// <param name="client"></param> public ArangoDBClient(HttpClient client) { _transport = new HttpApiTransport(client); Cursor = new CursorApiClient(_transport); Database = new DatabaseApiClient(_transport); Document = new DocumentApiClient(_transport); Collection = new CollectionApiClient(_transport); Transaction = new TransactionApiClient(_transport); Graph = new GraphApiClient(_transport); }
/// <summary> /// Create an instance of <see cref="ArangoDBClient"/> /// using the provided transport and serialization layers. /// </summary> /// <param name="transport">The ArangoDB transport layer implementation.</param> /// <param name="serialization">The serialization layer implementation.</param> public ArangoDBClient(IApiClientTransport transport, IApiClientSerialization serialization) { _transport = transport; Auth = new AuthApiClient(_transport, serialization); Cursor = new CursorApiClient(_transport, serialization); Database = new DatabaseApiClient(_transport, serialization); Document = new DocumentApiClient(_transport, serialization); Collection = new CollectionApiClient(_transport, serialization); Transaction = new TransactionApiClient(_transport, serialization); Graph = new GraphApiClient(_transport, serialization); }
/// <summary> /// Create an instance of <see cref="ArangoDBClient"/> from an existing /// <see cref="HttpClient"/> instance, using the default JSON serialization. /// </summary> /// <param name="client"></param> public ArangoDBClient(HttpClient client) { _transport = new HttpApiTransport(client, HttpContentType.Json); AqlFunction = new AqlFunctionApiClient(_transport); Auth = new AuthApiClient(_transport); Cursor = new CursorApiClient(_transport); Database = new DatabaseApiClient(_transport); Document = new DocumentApiClient(_transport); Collection = new CollectionApiClient(_transport); Transaction = new TransactionApiClient(_transport); Graph = new GraphApiClient(_transport); }
public async Task PostCursorAsync_ShouldUseHeaderProperties() { // Mock the IApiClientTransport. var mockTransport = new Mock <IApiClientTransport>(); // Mock the IApiClientResponse. var mockResponse = new Mock <IApiClientResponse>(); // Mock the IApiClientResponseContent. var mockResponseContent = new Mock <IApiClientResponseContent>(); // Setup the mocked api client response. mockResponse.Setup(x => x.Content) .Returns(mockResponseContent.Object); mockResponse.Setup(x => x.IsSuccessStatusCode) .Returns(true); // Setup the mocked api client transport. WebHeaderCollection requestHeader = null; mockTransport.Setup(x => x.PostAsync( It.IsAny <string>(), It.IsAny <byte[]>(), It.IsAny <WebHeaderCollection>())) .Returns((string uri, byte[] content, WebHeaderCollection webHeaderCollection) => { requestHeader = webHeaderCollection; return(Task.FromResult(mockResponse.Object)); }); string dummyTransactionId = "dummy transaction Id"; // Call the method to create the cursor. var apiClient = new CursorApiClient(mockTransport.Object); await apiClient.PostCursorAsync <MyModel>( new PostCursorBody { Query = "FOR doc IN [{ myProperty: CONCAT('This is a ', @testString) }] LIMIT 1 RETURN doc", BindVars = new Dictionary <string, object> { ["testString"] = "robbery" } }, new CursorHeaderProperties { TransactionId = dummyTransactionId }); // Check that the header and values are there. Assert.NotNull(requestHeader); Assert.Contains(CustomHttpHeaders.StreamTransactionHeader, requestHeader.AllKeys); Assert.Equal(dummyTransactionId, requestHeader.Get(CustomHttpHeaders.StreamTransactionHeader)); }
private void InitializeApis( IApiClientTransport transport, IApiClientSerialization serialization) { AqlFunction = new AqlFunctionApiClient(transport, serialization); Auth = new AuthApiClient(transport, serialization); Cursor = new CursorApiClient(transport, serialization); Database = new DatabaseApiClient(transport, serialization); Document = new DocumentApiClient(transport, serialization); Collection = new CollectionApiClient(transport, serialization); Transaction = new TransactionApiClient(transport, serialization); Graph = new GraphApiClient(transport, serialization); User = new UserApiClient(transport, serialization); }
public async Task PostCursorAsync_ShouldThrow_WhenErrorDeserializationFailed() { var mockTransport = new Mock <IApiClientTransport>(); var mockResponse = new Mock <IApiClientResponse>(); var mockResponseContent = new Mock <IApiClientResponseContent>(); string mockJsonError = "{ errorNum: \"some_error\" }"; mockResponseContent.Setup(x => x.ReadAsStreamAsync()) .Returns(Task.FromResult <Stream>( new MemoryStream(Encoding.UTF8.GetBytes(mockJsonError)))); mockResponse.Setup(x => x.Content) .Returns(mockResponseContent.Object); mockResponse.Setup(x => x.IsSuccessStatusCode) .Returns(false); mockTransport.Setup(x => x.PostAsync( It.IsAny <string>(), It.IsAny <byte[]>(), It.IsAny <WebHeaderCollection>())) .Returns(Task.FromResult(mockResponse.Object)); var cursorApi = new CursorApiClient(mockTransport.Object); var ex = await Assert.ThrowsAsync <SerializationException>(async() => { await cursorApi.PostCursorAsync <object>("RETURN true"); }); Assert.NotNull(ex.Message); Assert.Contains("while Deserializing an error response", ex.Message); Assert.NotNull(ex.InnerException); }
public CursorApiClientTest(CursorApiClientTestFixture fixture) { _cursorApi = fixture.ArangoDBClient.Cursor; _cursorApi.ThrowErrorsAsExceptions = false; }
public CursorApiClientTest(CursorApiClientTestFixture fixture) { _cursorApi = fixture.ArangoDBClient.Cursor; }