From d4055c6ff1857676672ac39627b3578b9c95473a Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Mon, 23 Mar 2026 16:03:20 +0000
Subject: [PATCH 01/10] Avoid deprecated fields
---
.../Api/GraphQL/Models/Workspace.cs | 12 ++++++-
.../GraphQL/Resources/ActiveUserResource.cs | 8 ++---
.../GraphQL/Resources/OtherUserResource.cs | 36 +++++++++----------
.../GraphQL/Resources/WorkspaceResource.cs | 6 +---
4 files changed, 32 insertions(+), 30 deletions(-)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs b/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs
index 745f54ad7..807212bd6 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs
@@ -1,3 +1,5 @@
+using Speckle.Newtonsoft.Json;
+
namespace Speckle.Sdk.Api.GraphQL.Models;
public class LimitedWorkspace
@@ -6,8 +8,12 @@ public class LimitedWorkspace
public string name { get; init; }
public string? role { get; init; }
public string slug { get; init; }
- public string? logo { get; init; }
+ public string? logoUri { get; init; }
public string? description { get; init; }
+
+ [JsonIgnore]
+ [Obsolete($"Deprecated, use {nameof(logoUri)} instead", true)]
+ public string? logo { get; init; }
}
public class Workspace : LimitedWorkspace
@@ -16,9 +22,13 @@ public class Workspace : LimitedWorkspace
public DateTime updatedAt { get; init; }
public bool readOnly { get; init; }
public WorkspacePermissionChecks permissions { get; init; }
+
+ [JsonIgnore]
+ [Obsolete("Workspaces no longer have creation state, is always created true", true)]
public WorkspaceCreationState? creationState { get; init; }
}
+[Obsolete("Workspaces no longer have creation state, is always created true")]
public sealed class WorkspaceCreationState
{
public bool completed { get; init; }
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
index cb5451816..732b3fa56 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
@@ -264,15 +264,11 @@ query ActiveUser($limit: Int!, $cursor: String, $filter: UserWorkspacesFilter) {
name
role
slug
- logo
+ logoUrl
createdAt
updatedAt
readOnly
description
- creationState
- {
- completed
- }
permissions {
canCreateProject {
authorized
@@ -328,7 +324,7 @@ query ActiveUser {
name
role
slug
- logo
+ logoUrl
description
}
}
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
index 309d12557..a6c65dbda 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
@@ -52,7 +52,6 @@ query LimitedUser($id: String!) {
/// String to search for. Must be at least 3 characters
/// Max number of users to fetch
/// Optional cursor for pagination
- ///
///
///
///
@@ -61,26 +60,25 @@ public async Task UserSearch(
string query,
int limit = ServerLimits.DEFAULT_PAGINATION_REQUEST,
string? cursor = null,
- bool archived = false,
bool emailOnly = false,
CancellationToken cancellationToken = default
)
{
//language=graphql
const string QUERY = """
- query UserSearch($query: String!, $limit: Int!, $cursor: String, $archived: Boolean, $emailOnly: Boolean) {
- data:userSearch(query: $query, limit: $limit, cursor: $cursor, archived: $archived, emailOnly: $emailOnly) {
+ query Users($input: UsersRetrievalInput!) {
+ users(input: $input) {
cursor
items {
- id
- name
- bio
- company
- avatar
- verified
- role
- }
- }
+ id
+ name
+ bio
+ company
+ avatar
+ verified
+ role
+ }
+ }
}
""";
@@ -89,11 +87,13 @@ query UserSearch($query: String!, $limit: Int!, $cursor: String, $archived: Bool
Query = QUERY,
Variables = new
{
- query,
- limit,
- cursor,
- archived,
- emailOnly,
+ input = new
+ {
+ query,
+ limit,
+ emailOnly,
+ cursor,
+ },
},
};
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/WorkspaceResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/WorkspaceResource.cs
index 285c008b6..805a4ad67 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/WorkspaceResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/WorkspaceResource.cs
@@ -28,15 +28,11 @@ query WorkspaceGet($workspaceId: String!) {
name
role
slug
- logo
+ logoUrl
createdAt
updatedAt
readOnly
description
- creationState
- {
- completed
- }
permissions {
canCreateProject {
authorized
From 4b319499c33609b81e831dc976e9834fadaaa9a3 Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Mon, 23 Mar 2026 16:10:44 +0000
Subject: [PATCH 02/10] Fix mistake
---
src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
index a6c65dbda..26d462564 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
@@ -67,7 +67,7 @@ public async Task UserSearch(
//language=graphql
const string QUERY = """
query Users($input: UsersRetrievalInput!) {
- users(input: $input) {
+ data:users(input: $input) {
cursor
items {
id
From 2b61ab7d2e0088a97f5bdfb41b70eda701ec1411 Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 24 Mar 2026 10:04:44 +0000
Subject: [PATCH 03/10] fallback mechanism
---
.../GraphQL/Resources/ActiveUserResource.cs | 44 ++++++++++++++++++-
.../GraphQL/Resources/SubscriptionResource.cs | 1 +
2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
index 732b3fa56..4e8289187 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
@@ -313,7 +313,7 @@ query ActiveUser($limit: Int!, $cursor: String, $filter: UserWorkspacesFilter) {
/// note this returns a , because it may be a workspace the user is not a member of
///
/// The ActiveUser could not be found (e.g. the client is not authenticated)
- public async Task GetActiveWorkspace(CancellationToken cancellationToken = default)
+ private async Task GetActiveWorkspace_Legacy(CancellationToken cancellationToken = default)
{
//language=graphql
const string QUERY = """
@@ -324,7 +324,6 @@ query ActiveUser {
name
role
slug
- logoUrl
description
}
}
@@ -345,6 +344,47 @@ query ActiveUser {
return response.data.data;
}
+ public async Task GetActiveWorkspace(CancellationToken cancellationToken = default)
+ {
+ //language=graphql
+ const string QUERY = """
+ query ActiveUser {
+ data:activeUser {
+ data:activeWorkspace {
+ id
+ name
+ role
+ slug
+ logoUrl
+ description
+ }
+ }
+ }
+ """;
+
+ var request = new GraphQLRequest { Query = QUERY };
+
+ NullableResponse?> response;
+ try
+ {
+ response = await _client
+ .ExecuteGraphQLRequest?>>(request, cancellationToken)
+ .ConfigureAwait(false);
+ }
+ catch (SpeckleGraphQLInvalidQueryException)
+ {
+ //v2.x.x servers do not have a logoUrl property
+ return await GetActiveWorkspace_Legacy(cancellationToken).ConfigureAwait(false);
+ }
+
+ if (response.data is null)
+ {
+ throw new SpeckleException("GraphQL response indicated that the ActiveUser could not be found");
+ }
+
+ return response.data.data;
+ }
+
/// Max number of projects to fetch
/// Optional cursor for pagination
/// Optional filter
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs
index 8ba201d18..391402305 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs
@@ -76,6 +76,7 @@ subscription UserProjectsUpdated {
/// Subscribe to updates to resource comments/threads. Optionally specify resource ID string to only receive updates regarding comments for those resources
///
///
+ [Obsolete("Comments are now issues, and we've not update SDKs with the new subs")]
public Subscription CreateProjectCommentsUpdatedSubscription(
ViewerUpdateTrackingTarget target
)
From c517dead036529ea658e162ff2cf24a9d5b41102 Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 24 Mar 2026 10:24:43 +0000
Subject: [PATCH 04/10] Internal
---
.../Api/GraphQL/Resources/WorkspaceResourceTests.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs
index d597472d4..838156e2c 100644
--- a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs
+++ b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs
@@ -21,7 +21,7 @@ private static async Task Setup()
return testUser;
}
- [Fact]
+ [Fact, Trait("Server", "Internal")]
public async Task TestGetWorkspace()
{
var ex = await Assert.ThrowsAsync(async () => _ = await Sut.Get("non-existent-id"));
From 63e174b0fba64a057216adf4d44cf07b464f8625 Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 30 Jun 2026 10:47:47 +0100
Subject: [PATCH 05/10] simpler handling of v2 servers
---
.../Api/GraphQL/Models/Workspace.cs | 18 ++++-----
.../GraphQL/Resources/ActiveUserResource.cs | 40 +------------------
.../Api/GraphQL/Resources/CommentResource.cs | 7 ++++
.../GraphQL/Resources/OtherUserResource.cs | 1 +
4 files changed, 19 insertions(+), 47 deletions(-)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs b/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs
index 807212bd6..9faa104a0 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Models/Workspace.cs
@@ -4,10 +4,10 @@ namespace Speckle.Sdk.Api.GraphQL.Models;
public class LimitedWorkspace
{
- public string id { get; init; }
- public string name { get; init; }
+ public required string id { get; init; }
+ public required string name { get; init; }
public string? role { get; init; }
- public string slug { get; init; }
+ public required string slug { get; init; }
public string? logoUri { get; init; }
public string? description { get; init; }
@@ -18,10 +18,10 @@ public class LimitedWorkspace
public class Workspace : LimitedWorkspace
{
- public DateTime createdAt { get; init; }
- public DateTime updatedAt { get; init; }
- public bool readOnly { get; init; }
- public WorkspacePermissionChecks permissions { get; init; }
+ public required DateTime createdAt { get; init; }
+ public required DateTime updatedAt { get; init; }
+ public required bool readOnly { get; init; }
+ public required WorkspacePermissionChecks permissions { get; init; }
[JsonIgnore]
[Obsolete("Workspaces no longer have creation state, is always created true", true)]
@@ -31,10 +31,10 @@ public class Workspace : LimitedWorkspace
[Obsolete("Workspaces no longer have creation state, is always created true")]
public sealed class WorkspaceCreationState
{
- public bool completed { get; init; }
+ public required bool completed { get; init; }
}
public sealed class WorkspacePermissionChecks
{
- public PermissionCheckResult canCreateProject { get; init; }
+ public required PermissionCheckResult canCreateProject { get; init; }
}
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
index 4e8289187..716f4c5ec 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
@@ -1,4 +1,4 @@
-using GraphQL;
+using GraphQL;
using Speckle.Sdk.Api.GraphQL.Inputs;
using Speckle.Sdk.Api.GraphQL.Models;
using Speckle.Sdk.Api.GraphQL.Models.Responses;
@@ -308,42 +308,6 @@ query ActiveUser($limit: Int!, $cursor: String, $filter: UserWorkspacesFilter) {
return response.data.data;
}
- ///
- /// The active (last selected) workspace
- /// note this returns a , because it may be a workspace the user is not a member of
- ///
- /// The ActiveUser could not be found (e.g. the client is not authenticated)
- private async Task GetActiveWorkspace_Legacy(CancellationToken cancellationToken = default)
- {
- //language=graphql
- const string QUERY = """
- query ActiveUser {
- data:activeUser {
- data:activeWorkspace {
- id
- name
- role
- slug
- description
- }
- }
- }
- """;
-
- var request = new GraphQLRequest { Query = QUERY };
-
- var response = await _client
- .ExecuteGraphQLRequest?>>(request, cancellationToken)
- .ConfigureAwait(false);
-
- if (response.data is null)
- {
- throw new SpeckleException("GraphQL response indicated that the ActiveUser could not be found");
- }
-
- return response.data.data;
- }
-
public async Task GetActiveWorkspace(CancellationToken cancellationToken = default)
{
//language=graphql
@@ -374,7 +338,7 @@ query ActiveUser {
catch (SpeckleGraphQLInvalidQueryException)
{
//v2.x.x servers do not have a logoUrl property
- return await GetActiveWorkspace_Legacy(cancellationToken).ConfigureAwait(false);
+ return null;
}
if (response.data is null)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/CommentResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/CommentResource.cs
index 30aed5e97..ed9397c7d 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/CommentResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/CommentResource.cs
@@ -21,6 +21,7 @@ internal CommentResource(ISpeckleGraphQLClient client)
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
public async Task Get(
string commentId,
string projectId,
@@ -99,6 +100,7 @@ query CommentThreads($projectId: String!, $commentId: String!, $repliesLimit: In
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
public async Task GetProjectComments(
string projectId,
int limit = ServerLimits.DEFAULT_PAGINATION_REQUEST,
@@ -186,6 +188,7 @@ query CommentThreads($projectId: String!, $cursor: String, $limit: Int!, $filter
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
internal async Task Create(CreateCommentInput input, CancellationToken cancellationToken = default)
{
//language=graphql
@@ -227,6 +230,7 @@ mutation Mutation($input: CreateCommentInput!) {
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
internal async Task Edit(EditCommentInput input, CancellationToken cancellationToken = default)
{
//language=graphql
@@ -267,6 +271,7 @@ mutation Mutation($input: EditCommentInput!) {
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
public async Task Archive(ArchiveCommentInput input, CancellationToken cancellationToken = default)
{
//language=graphql
@@ -293,6 +298,7 @@ mutation Mutation($input: ArchiveCommentInput!) {
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
public async Task MarkViewed(MarkCommentViewedInput input, CancellationToken cancellationToken = default)
{
//language=graphql
@@ -320,6 +326,7 @@ mutation Mutation($input: MarkCommentViewedInput!) {
///
///
///
+ [Obsolete("Comments are deprecated in favour of Issues which we don't provide a .NET Resource for at this time")]
internal async Task Reply(CreateCommentReplyInput input, CancellationToken cancellationToken = default)
{
//language=graphql
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
index 26d462564..a0a92cf60 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/OtherUserResource.cs
@@ -56,6 +56,7 @@ query LimitedUser($id: String!) {
///
///
///
+ [Obsolete("User search is deprecated")]
public async Task UserSearch(
string query,
int limit = ServerLimits.DEFAULT_PAGINATION_REQUEST,
From 40b7ca9af06a5311a3a20885b504fa873efd1c1f Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 30 Jun 2026 10:49:10 +0100
Subject: [PATCH 06/10] return comment
---
src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
index 716f4c5ec..c028eb6bc 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
@@ -308,6 +308,11 @@ query ActiveUser($limit: Int!, $cursor: String, $filter: UserWorkspacesFilter) {
return response.data.data;
}
+ ///
+ /// The active (last selected) workspace
+ /// note this returns a , because it may be a workspace the user is not a member of
+ ///
+ /// The ActiveUser could not be found (e.g. the client is not authenticated)
public async Task GetActiveWorkspace(CancellationToken cancellationToken = default)
{
//language=graphql
From 42830afa80688b4982d18821f54793391d4774ef Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 30 Jun 2026 11:04:23 +0100
Subject: [PATCH 07/10] adjust v2 handler
---
src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
index c028eb6bc..a44e762f5 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
@@ -340,8 +340,10 @@ query ActiveUser {
.ExecuteGraphQLRequest?>>(request, cancellationToken)
.ConfigureAwait(false);
}
- catch (SpeckleGraphQLInvalidQueryException)
+ catch (AggregateException a)
{
+ a.Handle(x => x is SpeckleGraphQLInvalidQueryException);
+
//v2.x.x servers do not have a logoUrl property
return null;
}
From ec007cba284ed90849134fcbf158e5e5a3f8ec58 Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 30 Jun 2026 11:04:41 +0100
Subject: [PATCH 08/10] move comment for clartty
---
src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
index a44e762f5..b9f8f0b4b 100644
--- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
+++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs
@@ -342,9 +342,9 @@ query ActiveUser {
}
catch (AggregateException a)
{
+ //v2.x.x servers do not have a logoUrl property
a.Handle(x => x is SpeckleGraphQLInvalidQueryException);
- //v2.x.x servers do not have a logoUrl property
return null;
}
From d3b043c7b859e37f5cd8114641c44a31cdc1ddca Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 30 Jun 2026 11:09:43 +0100
Subject: [PATCH 09/10] fix tests
---
.../Api/GraphQL/Resources/WorkspaceResourceTests.cs | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs
index 66f4666c0..c895b4709 100644
--- a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs
+++ b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/WorkspaceResourceTests.cs
@@ -27,10 +27,18 @@ public async Task TestGetWorkspace()
{
var ex = await Assert.ThrowsAsync(async () => _ = await Sut.Get("non-existent-id"));
ex.InnerExceptions.Should().HaveCount(1);
- ex.InnerExceptions.Should().AllBeOfType();
+ ex.InnerExceptions.Should().AllBeOfType();
+ }
+
+ [Fact, Trait("Server", "Internal")]
+ public async Task TestGetProjectsInternal()
+ {
+ var ex = await Assert.ThrowsAsync(async () => _ = await Sut.GetProjects("non-existent-id"));
+ ex.InnerExceptions.Should().HaveCount(1);
+ ex.InnerExceptions.Should().AllBeOfType();
}
- [Fact]
+ [Fact, Trait("Server", "Public")]
public async Task TestGetProjects()
{
var ex = await Assert.ThrowsAsync(async () => _ = await Sut.GetProjects("non-existent-id"));
From ff8e82dd3593716ee0697addc028c2e3f3a6b7d2 Mon Sep 17 00:00:00 2001
From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
Date: Tue, 30 Jun 2026 11:29:26 +0100
Subject: [PATCH 10/10] Internal tests
---
.../Api/GraphQL/Resources/ActiveUserResourceTests.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ActiveUserResourceTests.cs b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ActiveUserResourceTests.cs
index 803a42b6e..e80671cca 100644
--- a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ActiveUserResourceTests.cs
+++ b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ActiveUserResourceTests.cs
@@ -107,14 +107,14 @@ await FluentActions
.ThrowAsync();
}
- [Fact]
+ [Fact, Trait("Server", "Internal")]
public async Task ActiveUserGetWorkspaces()
{
var ex = await Assert.ThrowsAsync(async () => _ = await Sut.GetWorkspaces());
await Verify(ex);
}
- [Fact]
+ [Fact, Trait("Server", "Internal")]
public async Task ActiveUserGetWorkspaces_NoAuth()
{
await FluentActions
@@ -130,7 +130,7 @@ public async Task ActiveUserGetActiveWorkspace()
res.Should().Be(null);
}
- [Fact]
+ [Fact, Trait("Server", "Internal")]
public async Task ActiveUserGetActiveWorkspace_NoAuth()
{
await FluentActions