diff --git a/src/Speckle.Sdk/Api/GraphQL/Client.cs b/src/Speckle.Sdk/Api/GraphQL/Client.cs index d80618a5..fb5066fc 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Client.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Client.cs @@ -326,7 +326,7 @@ private static HttpClient CreateHttpClient(ISpeckleApplication application, ISpe { var httpClient = speckleHttp.CreateHttpClient(timeoutSeconds: 30, authorizationToken: account.token); - httpClient.DefaultRequestHeaders.Add("apollographql-client-name", application.ApplicationVersion); + httpClient.DefaultRequestHeaders.Add("apollographql-client-name", application.ApplicationAndVersion); httpClient.DefaultRequestHeaders.Add( "apollographql-client-version", Assembly.GetExecutingAssembly().GetName().Version?.ToString() diff --git a/src/Speckle.Sdk/Credentials/AccountManager.cs b/src/Speckle.Sdk/Credentials/AccountManager.cs index affa6dfc..41634da0 100644 --- a/src/Speckle.Sdk/Credentials/AccountManager.cs +++ b/src/Speckle.Sdk/Credentials/AccountManager.cs @@ -679,7 +679,7 @@ private static void TryLockAccountAddFlow(ISpeckleApplication application, TimeS } } - var lockId = application.ApplicationVersion + "@" + DateTime.Now.Add(timespan).ToString("o"); + var lockId = application.ApplicationAndVersion + "@" + DateTime.Now.Add(timespan).ToString("o"); // using the lock release time as an id and value // for ease of deletion and retrieval diff --git a/src/Speckle.Sdk/ServiceRegistration.cs b/src/Speckle.Sdk/ServiceRegistration.cs index 5a134d22..ce9895d5 100644 --- a/src/Speckle.Sdk/ServiceRegistration.cs +++ b/src/Speckle.Sdk/ServiceRegistration.cs @@ -1,28 +1,18 @@ using System.Reflection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; -using Speckle.InterfaceGenerator; using Speckle.Sdk.Host; using Speckle.Sdk.Logging; namespace Speckle.Sdk; -[GenerateAutoInterface] -public class SpeckleApplication : ISpeckleApplication -{ - public string Application { get; init; } - public string Version { get; init; } - public string Slug { get; init; } - - public string ApplicationVersion => $"{Application} {Version}"; -} - public static class ServiceRegistration { public static IServiceCollection AddSpeckleSdk( this IServiceCollection serviceCollection, HostApplication application, - HostAppVersion version + HostAppVersion version, + string speckleVersion ) { serviceCollection.AddLogging(); @@ -31,8 +21,9 @@ HostAppVersion version serviceCollection.AddSingleton( new SpeckleApplication { - Application = name, - Version = HostApplications.GetVersion(version), + HostApplication = name, + SpeckleVersion = speckleVersion, + HostApplicationVersion = HostApplications.GetVersion(version), Slug = application.Slug } ); diff --git a/src/Speckle.Sdk/SpeckleApplication.cs b/src/Speckle.Sdk/SpeckleApplication.cs new file mode 100644 index 00000000..7aeccb81 --- /dev/null +++ b/src/Speckle.Sdk/SpeckleApplication.cs @@ -0,0 +1,14 @@ +using Speckle.InterfaceGenerator; + +namespace Speckle.Sdk; + +[GenerateAutoInterface] +public class SpeckleApplication : ISpeckleApplication +{ + public string HostApplication { get; init; } + public string HostApplicationVersion { get; init; } + public string Slug { get; init; } + public string SpeckleVersion { get; init; } + + public string ApplicationAndVersion => $"{HostApplication} {HostApplicationVersion}"; +} diff --git a/tests/Speckle.Sdk.Tests.Integration/Fixtures.cs b/tests/Speckle.Sdk.Tests.Integration/Fixtures.cs index 32d7403d..bfa268b9 100644 --- a/tests/Speckle.Sdk.Tests.Integration/Fixtures.cs +++ b/tests/Speckle.Sdk.Tests.Integration/Fixtures.cs @@ -26,9 +26,7 @@ static Fixtures() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(IgnoreTest).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - ServiceProvider = serviceCollection.BuildServiceProvider(); + ServiceProvider = TestServiceSetup.GetServiceProvider(); } public static Client Unauthed => diff --git a/tests/Speckle.Sdk.Tests.Integration/GraphQLCLient.cs b/tests/Speckle.Sdk.Tests.Integration/GraphQLCLient.cs index 3a97db68..0bb0ef76 100644 --- a/tests/Speckle.Sdk.Tests.Integration/GraphQLCLient.cs +++ b/tests/Speckle.Sdk.Tests.Integration/GraphQLCLient.cs @@ -18,9 +18,7 @@ public async Task Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(DataChunk).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); _account = await Fixtures.SeedUser(); _client = serviceProvider.GetRequiredService().Create(_account); diff --git a/tests/Speckle.Sdk.Tests.Integration/MemoryTransportTests.cs b/tests/Speckle.Sdk.Tests.Integration/MemoryTransportTests.cs index 4168d649..230804b4 100644 --- a/tests/Speckle.Sdk.Tests.Integration/MemoryTransportTests.cs +++ b/tests/Speckle.Sdk.Tests.Integration/MemoryTransportTests.cs @@ -20,9 +20,7 @@ public void Setup() CleanData(); TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, Assembly.GetExecutingAssembly()); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Integration/TestServiceSetup.cs b/tests/Speckle.Sdk.Tests.Integration/TestServiceSetup.cs new file mode 100644 index 00000000..30d44dff --- /dev/null +++ b/tests/Speckle.Sdk.Tests.Integration/TestServiceSetup.cs @@ -0,0 +1,14 @@ +using Microsoft.Extensions.DependencyInjection; +using Speckle.Sdk.Host; + +namespace Speckle.Sdk.Tests.Integration; + +public static class TestServiceSetup +{ + public static IServiceProvider GetServiceProvider() + { + var serviceCollection = new ServiceCollection(); + serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023, "Test"); + return serviceCollection.BuildServiceProvider(); + } +} diff --git a/tests/Speckle.Sdk.Tests.Performance/TestDataHelper.cs b/tests/Speckle.Sdk.Tests.Performance/TestDataHelper.cs index 4996ed89..2420efdd 100644 --- a/tests/Speckle.Sdk.Tests.Performance/TestDataHelper.cs +++ b/tests/Speckle.Sdk.Tests.Performance/TestDataHelper.cs @@ -19,7 +19,7 @@ public sealed class TestDataHelper : IDisposable public TestDataHelper() { var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); + serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023, "Test"); ServiceProvider = serviceCollection.BuildServiceProvider(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Api/GraphQLClient.cs b/tests/Speckle.Sdk.Tests.Unit/Api/GraphQLClient.cs index 5c03fb7d..8e4991fb 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Api/GraphQLClient.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Api/GraphQLClient.cs @@ -18,9 +18,7 @@ public sealed class GraphQLClientTests : IDisposable [OneTimeSetUp] public void Setup() { - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _client = serviceProvider .GetRequiredService() .Create( diff --git a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/ClosureTests.cs b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/ClosureTests.cs index 435f149a..88ea3a3c 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/ClosureTests.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/ClosureTests.cs @@ -21,9 +21,7 @@ public void Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(TableLegFixture).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/OperationsReceiveTests.cs b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/OperationsReceiveTests.cs index 45da12d4..2b7bd051 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/OperationsReceiveTests.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/OperationsReceiveTests.cs @@ -52,9 +52,7 @@ private static void Reset() public async Task GlobalSetup() { Reset(); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); _testCaseTransport = new MemoryTransport(); foreach (var b in s_testObjects) @@ -67,9 +65,7 @@ public async Task GlobalSetup() public void Setup() { Reset(); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendObjectReferences.cs b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendObjectReferences.cs index 0c37deb5..034af805 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendObjectReferences.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendObjectReferences.cs @@ -16,9 +16,7 @@ public void Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(DataChunk).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendReceiveLocal.cs b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendReceiveLocal.cs index 41df6898..f9e37eca 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendReceiveLocal.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SendReceiveLocal.cs @@ -20,9 +20,7 @@ public void Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(Point).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SerializationTests.cs b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SerializationTests.cs index 3e5f2a1d..75bda238 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SerializationTests.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Api/Operations/SerializationTests.cs @@ -22,9 +22,7 @@ public void Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(DataChunk).Assembly, typeof(ColorMock).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Credentials/AccountServerMigrationTests.cs b/tests/Speckle.Sdk.Tests.Unit/Credentials/AccountServerMigrationTests.cs index 52f11c3c..96535ed4 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Credentials/AccountServerMigrationTests.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Credentials/AccountServerMigrationTests.cs @@ -42,9 +42,7 @@ public static IEnumerable MigrationTestCase() public void TestServerMigration(IList accounts, string requestedUrl, IList expectedSequence) { AddAccounts(accounts); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); var result = serviceProvider.GetRequiredService().GetAccounts(requestedUrl).ToList(); diff --git a/tests/Speckle.Sdk.Tests.Unit/Credentials/Accounts.cs b/tests/Speckle.Sdk.Tests.Unit/Credentials/Accounts.cs index 3706cc36..ddf39629 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Credentials/Accounts.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Credentials/Accounts.cs @@ -51,9 +51,7 @@ public static void SetUp() [SetUp] public void Setup2() { - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _accountManager = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerBreakingChanges.cs b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerBreakingChanges.cs index 1d8487dd..4c78302e 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerBreakingChanges.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerBreakingChanges.cs @@ -26,9 +26,7 @@ public void Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(Base).Assembly, typeof(Point).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerNonBreakingChanges.cs b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerNonBreakingChanges.cs index 32a3906e..66321f4d 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerNonBreakingChanges.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SerializerNonBreakingChanges.cs @@ -27,9 +27,7 @@ public void Setup() { TypeLoader.Reset(); TypeLoader.Initialize(typeof(StringValueMock).Assembly); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs index 8e8cba3a..3efc054f 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs @@ -40,9 +40,7 @@ public void Setup() { Reset(); - var serviceCollection = new ServiceCollection(); - serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023); - var serviceProvider = serviceCollection.BuildServiceProvider(); + var serviceProvider = TestServiceSetup.GetServiceProvider(); _operations = serviceProvider.GetRequiredService(); } diff --git a/tests/Speckle.Sdk.Tests.Unit/TestServiceSetup.cs b/tests/Speckle.Sdk.Tests.Unit/TestServiceSetup.cs new file mode 100644 index 00000000..28493be0 --- /dev/null +++ b/tests/Speckle.Sdk.Tests.Unit/TestServiceSetup.cs @@ -0,0 +1,14 @@ +using Microsoft.Extensions.DependencyInjection; +using Speckle.Sdk.Host; + +namespace Speckle.Sdk.Tests.Unit; + +public static class TestServiceSetup +{ + public static IServiceProvider GetServiceProvider() + { + var serviceCollection = new ServiceCollection(); + serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023, "Test"); + return serviceCollection.BuildServiceProvider(); + } +}