diff --git a/CHANGELOG.md b/CHANGELOG.md index 683664673..2a08745b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Features 1. [#84](https://github.com/influxdata/influxdb-client-csharp/issues/84): Add possibility to authenticate by Basic Authentication or the URL query parameters 2. [#91](https://github.com/influxdata/influxdb-client-csharp/pull/91): Added support "inf" in Duration +2. [#92](https://github.com/influxdata/influxdb-client-csharp/pull/92): Remove trailing slash from connection URL ### Bug Fixes 1. [#81](https://github.com/influxdata/influxdb-client-csharp/pull/81): Fixed potentially hangs on of WriteApi.Dispose() diff --git a/Client.Test/InfluxDbClientTest.cs b/Client.Test/InfluxDbClientTest.cs index 8ac181400..8a4bd2556 100644 --- a/Client.Test/InfluxDbClientTest.cs +++ b/Client.Test/InfluxDbClientTest.cs @@ -154,5 +154,70 @@ public async Task UserAgentHeader() StringAssert.StartsWith("influxdb-client-csharp/1.", request.RequestMessage.Headers["User-Agent"].First()); StringAssert.EndsWith(".0.0", request.RequestMessage.Headers["User-Agent"].First()); } + + [Test] + public async Task TrailingSlashInUrl() + { + MockServer + .Given(Request.Create().WithPath("/api/v2/write").UsingPost()) + .RespondWith(CreateResponse("{}")); + + using (var writeApi = _client.GetWriteApi()) + { + writeApi.WriteRecord("b1", "org1", WritePrecision.Ns, + "h2o_feet,location=coyote_creek water_level=1.0 1"); + } + + var request = MockServer.LogEntries.Last(); + Assert.AreEqual(MockServerUrl + "/api/v2/write?org=org1&bucket=b1&precision=ns", + request.RequestMessage.AbsoluteUrl); + + _client.Dispose(); + _client = InfluxDBClientFactory.Create(MockServerUrl + "/"); + + using (var writeApi = _client.GetWriteApi()) + { + writeApi.WriteRecord("b1", "org1", WritePrecision.Ns, + "h2o_feet,location=coyote_creek water_level=1.0 1"); + } + + request = MockServer.LogEntries.Last(); + Assert.AreEqual(MockServerUrl + "/api/v2/write?org=org1&bucket=b1&precision=ns", + request.RequestMessage.AbsoluteUrl); + + _client.Dispose(); + _client = InfluxDBClientFactory.Create(new InfluxDBClientOptions.Builder().Url(MockServerUrl) + .AuthenticateToken("my-token".ToCharArray()).Build()); + + using (var writeApi = _client.GetWriteApi()) + { + writeApi.WriteRecord("b1", "org1", WritePrecision.Ns, + "h2o_feet,location=coyote_creek water_level=1.0 1"); + } + + request = MockServer.LogEntries.Last(); + Assert.AreEqual(MockServerUrl + "/api/v2/write?org=org1&bucket=b1&precision=ns", + request.RequestMessage.AbsoluteUrl); + + _client.Dispose(); + _client = InfluxDBClientFactory.Create(new InfluxDBClientOptions.Builder().Url(MockServerUrl + "/") + .AuthenticateToken("my-token".ToCharArray()).Build()); + + using (var writeApi = _client.GetWriteApi()) + { + writeApi.WriteRecord("b1", "org1", WritePrecision.Ns, + "h2o_feet,location=coyote_creek water_level=1.0 1"); + } + + request = MockServer.LogEntries.Last(); + Assert.AreEqual(MockServerUrl + "/api/v2/write?org=org1&bucket=b1&precision=ns", + request.RequestMessage.AbsoluteUrl); + + Assert.True(MockServer.LogEntries.Any()); + foreach (var logEntry in MockServer.LogEntries) + { + StringAssert.StartsWith(MockServerUrl + "/api/v2/", logEntry.RequestMessage.AbsoluteUrl); + } + } } } \ No newline at end of file diff --git a/Client.Test/ItBucketsApiTest.cs b/Client.Test/ItBucketsApiTest.cs index cf8b92933..a16b0c443 100644 --- a/Client.Test/ItBucketsApiTest.cs +++ b/Client.Test/ItBucketsApiTest.cs @@ -163,6 +163,7 @@ public async Task FindBucketByName() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/14900")] public async Task FindBucketByNameNotFound() { var bucket = await _bucketsApi.FindBucketByNameAsync("my-bucket-not-found"); @@ -188,6 +189,7 @@ public async Task FindBucketLogsNotFound() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/18048")] public async Task FindBucketLogsPaging() { var bucket = await _bucketsApi.CreateBucketAsync(GenerateName("robot sensor"), RetentionRule(), _organization); @@ -372,6 +374,7 @@ public async Task Member() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/17244")] public async Task Owner() { var bucket = await _bucketsApi.CreateBucketAsync(GenerateName("robot sensor"), RetentionRule(), _organization); diff --git a/Client.Test/ItOrganizationsApiTest.cs b/Client.Test/ItOrganizationsApiTest.cs index f34091cdc..aff13a1ab 100644 --- a/Client.Test/ItOrganizationsApiTest.cs +++ b/Client.Test/ItOrganizationsApiTest.cs @@ -152,6 +152,7 @@ public async Task FindOrganizationLogsNotFound() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/18048")] public async Task FindOrganizationLogsPaging() { var organization = await _organizationsApi.CreateOrganizationAsync(GenerateName("Constant Pro")); @@ -226,14 +227,15 @@ public async Task FindOrganizationLogsPaging() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/18048")] public async Task FindOrganizations() { - var organizations = await _organizationsApi.FindOrganizationsAsync(); + var organizations = (await _organizationsApi.FindOrganizationsAsync()).Count; await _organizationsApi.CreateOrganizationAsync(GenerateName("Constant Pro")); var organizationsNew = await _organizationsApi.FindOrganizationsAsync(); - Assert.That(organizationsNew.Count == organizations.Count + 1); + Assert.AreEqual(organizationsNew.Count, organizations + 1); } [Test] diff --git a/Client.Test/ItUsersApiTest.cs b/Client.Test/ItUsersApiTest.cs index d484e344b..2f9adce2a 100644 --- a/Client.Test/ItUsersApiTest.cs +++ b/Client.Test/ItUsersApiTest.cs @@ -77,6 +77,7 @@ public void FindUserByIdNull() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/18048")] public async Task FindUserLogs() { var now = new DateTime(); @@ -112,6 +113,7 @@ public async Task FindUserLogsNotFound() } [Test] + [Ignore("TODO https://github.com/influxdata/influxdb/issues/18048")] public async Task FindUserLogsPaging() { var user = await _usersApi.CreateUserAsync(GenerateName("John Ryzen")); diff --git a/Client/Internal/ApiClient.cs b/Client/Internal/ApiClient.cs index 325c2b836..ba37cc8fc 100644 --- a/Client/Internal/ApiClient.cs +++ b/Client/Internal/ApiClient.cs @@ -89,7 +89,7 @@ private void InitToken() Encoding.Default.GetBytes( _options.Username + ":" + new string(_options.Password))); - var request = new RestRequest(_options.Url + "/api/v2/signin", Method.POST) + var request = new RestRequest("/api/v2/signin", Method.POST) .AddHeader("Authorization", header); authResponse = RestClient.Execute(request); @@ -126,7 +126,7 @@ protected internal void Signout() _signout = true; _sessionToken = null; - var request = new RestRequest(_options.Url + "/api/v2/signout", Method.POST); + var request = new RestRequest("/api/v2/signout", Method.POST); RestClient.Execute(request); } }