/// <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);
 }
Exemple #3
0
 /// <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;
 }