From f1db56e47158655ac4ff3490f490cf3bf918d171 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 2 Feb 2024 09:59:15 -0500 Subject: [PATCH 01/24] Add net6.0 to targeted frameworks --- FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs | 10 +++++----- .../Auth/Jwt/CustomTokenVerifier.cs | 4 ++-- .../FirebaseAdmin.Tests/Auth/Jwt/JwtTestUtils.cs | 2 +- .../Auth/Jwt/ServiceAccountSignerTest.cs | 2 +- .../Auth/Multitenancy/TenantManagerTest.cs | 4 ++-- .../Auth/Users/EmailActionRequestTest.cs | 2 +- .../FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj | 2 +- FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAppTest.cs | 2 +- .../Messaging/FirebaseMessagingTest.cs | 4 ++-- .../FirebaseAdmin.Tests/Messaging/MessageTest.cs | 2 +- FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj | 2 +- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs index decb54a8..bcd0b0b8 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs @@ -64,19 +64,19 @@ private void PopulateArgs(AbstractFirebaseAuth.Args args, TestOptions options) if (options.UserManagerRequestHandler != null) { args.UserManager = new Lazy( - this.CreateUserManager(options)); + () => this.CreateUserManager(options)); } if (options.ProviderConfigRequestHandler != null) { args.ProviderConfigManager = new Lazy( - this.CreateProviderConfigManager(options)); + () => this.CreateProviderConfigManager(options)); } if (options.IdTokenVerifier) { args.IdTokenVerifier = new Lazy( - this.CreateIdTokenVerifier()); + () => this.CreateIdTokenVerifier()); } if (options.SessionCookieVerifier) @@ -84,7 +84,7 @@ private void PopulateArgs(AbstractFirebaseAuth.Args args, TestOptions options) if (args is FirebaseAuth.Args) { (args as FirebaseAuth.Args).SessionCookieVerifier = - new Lazy(this.CreateSessionCookieVerifier()); + new Lazy(() => this.CreateSessionCookieVerifier()); } else { @@ -95,7 +95,7 @@ private void PopulateArgs(AbstractFirebaseAuth.Args args, TestOptions options) if (options.TokenFactory) { - args.TokenFactory = new Lazy(this.CreateTokenFactory()); + args.TokenFactory = new Lazy(() => this.CreateTokenFactory()); } } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/CustomTokenVerifier.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/CustomTokenVerifier.cs index 314b28d7..7d365f68 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/CustomTokenVerifier.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/CustomTokenVerifier.cs @@ -45,7 +45,7 @@ internal static CustomTokenVerifier ForEmulator(string tenantId = null) internal void Verify(string token, string uid, IDictionary claims = null) { - string[] segments = token.Split("."); + string[] segments = token.Split('.'); Assert.Equal(3, segments.Length); var header = JwtUtils.Decode(segments[0]); @@ -99,7 +99,7 @@ internal RSACustomTokenVerifier(string issuer, byte[] publicKey, string tenantId : base(issuer, tenantId) { var x509cert = new X509Certificate2(publicKey); - this.rsa = (RSA)x509cert.PublicKey.Key; + this.rsa = (RSA)x509cert.GetRSAPublicKey(); } protected override void AssertSignature(string tokenData, string signature) diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/JwtTestUtils.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/JwtTestUtils.cs index db24f856..6972b4ac 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/JwtTestUtils.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/JwtTestUtils.cs @@ -113,7 +113,7 @@ private sealed class ByteArrayPublicKeySource : IPublicKeySource public ByteArrayPublicKeySource(byte[] publicKey) { var x509cert = new X509Certificate2(publicKey); - var rsa = (RSA)x509cert.PublicKey.Key; + var rsa = (RSA)x509cert.GetRSAPublicKey(); this.rsa = ImmutableList.Create(new PublicKey("test-key-id", rsa)); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs index 630b688a..10f54daa 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs @@ -47,7 +47,7 @@ public void NullCredential() private bool Verify(byte[] data, byte[] signature) { var x509cert = new X509Certificate2(File.ReadAllBytes("./resources/public_cert.pem")); - var rsa = (RSA)x509cert.PublicKey.Key; + var rsa = (RSA)x509cert.GetRSAPublicKey(); return rsa.VerifyData( data, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs index 1d1361b4..3e101ebb 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs @@ -77,7 +77,7 @@ public static IEnumerable InvalidStrings() { var strings = new List() { null, string.Empty }; return TestConfigs.SelectMany( - config => strings, (config, str) => config.Append(str).ToArray()); + config => strings, (config, str) => config.Concat(new object[] { str }).ToArray()); } [Theory] @@ -669,7 +669,7 @@ internal FirebaseAuth CreateFirebaseAuth(HttpMessageHandler handler = null) EmulatorHost = this.EmulatorHost, }); var args = FirebaseAuth.Args.CreateDefault(); - args.TenantManager = new Lazy(tenantManager); + args.TenantManager = new Lazy(() => tenantManager); return new FirebaseAuth(args); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs index d79887e8..04af97ee 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs @@ -361,7 +361,7 @@ private FirebaseAuth CreateFirebaseAuth(HttpMessageHandler handler) RetryOptions = RetryOptions.NoBackOff, }); var args = FirebaseAuth.Args.CreateDefault(); - args.UserManager = new Lazy(userManager); + args.UserManager = new Lazy(() => userManager); return new FirebaseAuth(args); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index 974f2237..4ccb434b 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -1,7 +1,7 @@  - netcoreapp2.1 + net462;net6.0 latest false ../../FirebaseAdmin.snk diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAppTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAppTest.cs index 45fe909f..9f677011 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAppTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAppTest.cs @@ -250,7 +250,7 @@ public void GetSdkVersion() { var version = FirebaseApp.GetSdkVersion(); - var segments = version.Split("."); + var segments = version.Split('.'); Assert.Equal(3, segments.Length); int result; Assert.All(segments, (segment) => int.TryParse(segment, out result)); diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs index ddcba187..5541544d 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs @@ -99,7 +99,7 @@ public async Task SendMessageCancel() FirebaseApp.Create(new AppOptions() { Credential = MockCredential }); var canceller = new CancellationTokenSource(); canceller.Cancel(); - await Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await FirebaseMessaging.DefaultInstance.SendAsync( new Message() { Topic = "test-topic" }, canceller.Token)); } @@ -114,7 +114,7 @@ public async Task SendMessageCancelWithClientFactory() }); var canceller = new CancellationTokenSource(); canceller.Cancel(); - await Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await FirebaseMessaging.DefaultInstance.SendAsync( new Message() { Topic = "test-topic" }, canceller.Token)); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs index b53e87b6..96322fa3 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs @@ -339,7 +339,7 @@ public void AndroidConfig() "color", new JObject() { { "red", 0.6666667 }, - { "green", 0.733333349 }, + { "green", 0.73333335 }, { "blue", 0.8 }, { "alpha", 0.8666667 }, } diff --git a/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj b/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj index a76a2371..1cbc8bee 100644 --- a/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj +++ b/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj @@ -2,7 +2,7 @@ 2.4.0 - netstandard2.0;net461 + netstandard2.0;net462;net6.0 latest true ../../FirebaseAdmin.snk From 14d4931ee955d2ef1c0f689ca3ac87def2d0370d Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 2 Feb 2024 10:04:55 -0500 Subject: [PATCH 02/24] Add net6.0 to CI --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index af4aaa64..7b1817c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] + dotnet-version: [ 3.1.x, 6.0.x ] env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 @@ -17,12 +18,12 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v1 + uses: actions/checkout@v4 - name: Setup .NET Core 2.1 - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v4 with: - dotnet-version: 2.1.x + dotnet-version: ${{ matrix.dotnet-version }} - name: Install dependencies run: dotnet msbuild /t:restore FirebaseAdmin From 8c924b715034f853cc74b6f2eaca1f43e7b84dd9 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 2 Feb 2024 10:20:33 -0500 Subject: [PATCH 03/24] fix: update target frameworks for integration tests ans snippets --- .github/workflows/ci.yml | 2 +- .../FirebaseAdmin.IntegrationTests.csproj | 2 +- .../FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b1817c2..a5796313 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup .NET Core 2.1 + - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ matrix.dotnet-version }} diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index 5c839131..bb4dce40 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -1,7 +1,7 @@ - netcoreapp2.1 + net462;net6.0 latest false true diff --git a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj index 75cedf49..3595b444 100644 --- a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj @@ -1,7 +1,7 @@ - netcoreapp2.1 + net462;net6.0 false true ../../stylecop_test.ruleset From 087b499dbe85257a250d179406a70a94235c9cae Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 9 Feb 2024 12:56:34 -0500 Subject: [PATCH 04/24] Refactor build process and test multiple frameworks --- .github/scripts/builder.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 .github/scripts/builder.sh diff --git a/.github/scripts/builder.sh b/.github/scripts/builder.sh new file mode 100755 index 00000000..b4104922 --- /dev/null +++ b/.github/scripts/builder.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +# BUILD_CONFIGURATION=Release +BUILD_CONFIGURATION=Debug + +dotnet restore FirebaseAdmin/FirebaseAdmin.sln +dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore +dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore + +dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration $BUILD_CONFIGURATION +dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration $BUILD_CONFIGURATION \ No newline at end of file From 5df71464928f536ee2a715f0d2512fb529dbf6ec Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 9 Feb 2024 12:57:06 -0500 Subject: [PATCH 05/24] Refactor build process and test multiple frameworks --- .github/scripts/builder.sh | 8 ++------ .github/workflows/ci.yml | 12 ++++-------- .../Auth/AbstractFirebaseAuthTest.cs | 8 ++++---- .../FirebaseAdmin.IntegrationTests.csproj | 1 + .../FirebaseAdmin.Snippets/FirebaseAuthSnippets.cs | 6 ++++-- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/.github/scripts/builder.sh b/.github/scripts/builder.sh index b4104922..49f82bdd 100755 --- a/.github/scripts/builder.sh +++ b/.github/scripts/builder.sh @@ -2,12 +2,8 @@ set -e -# BUILD_CONFIGURATION=Release -BUILD_CONFIGURATION=Debug +BUILD_CONFIGURATION=Release dotnet restore FirebaseAdmin/FirebaseAdmin.sln dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore -dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore - -dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration $BUILD_CONFIGURATION -dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration $BUILD_CONFIGURATION \ No newline at end of file +dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a5796313..c59c3a5d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,14 +25,10 @@ jobs: with: dotnet-version: ${{ matrix.dotnet-version }} - - name: Install dependencies - run: dotnet msbuild /t:restore FirebaseAdmin - - name: Build with dotnet - run: | - dotnet msbuild FirebaseAdmin/FirebaseAdmin - dotnet msbuild FirebaseAdmin/FirebaseAdmin.Snippets - dotnet msbuild FirebaseAdmin/FirebaseAdmin.IntegrationTests + run: ./github/scripts/./builder.sh - name: Run unit tests - run: dotnet test FirebaseAdmin/FirebaseAdmin.Tests + run: | + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release \ No newline at end of file diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/Auth/AbstractFirebaseAuthTest.cs b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/Auth/AbstractFirebaseAuthTest.cs index 37b8d650..67516795 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/Auth/AbstractFirebaseAuthTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/Auth/AbstractFirebaseAuthTest.cs @@ -17,10 +17,10 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using System.Web; using FirebaseAdmin.Auth; using FirebaseAdmin.Auth.Hash; using Google.Apis.Auth.OAuth2; +using Microsoft.AspNetCore.WebUtilities; using Xunit; namespace FirebaseAdmin.IntegrationTests.Auth @@ -603,7 +603,7 @@ public async Task EmailVerificationLink() user.Email, EmailLinkSettings); var uri = new Uri(link); - var query = HttpUtility.ParseQueryString(uri.Query); + var query = QueryHelpers.ParseQuery(uri.Query); Assert.Equal(ContinueUrl, query["continueUrl"]); Assert.Equal("verifyEmail", query["mode"]); } @@ -617,7 +617,7 @@ public async Task PasswordResetLink() user.Email, EmailLinkSettings); var uri = new Uri(link); - var query = HttpUtility.ParseQueryString(uri.Query); + var query = QueryHelpers.ParseQuery(uri.Query); Assert.Equal(ContinueUrl, query["continueUrl"]); var request = new ResetPasswordRequest() @@ -645,7 +645,7 @@ public async Task SignInWithEmailLink() user.Email, EmailLinkSettings); var uri = new Uri(link); - var query = HttpUtility.ParseQueryString(uri.Query); + var query = QueryHelpers.ParseQuery(uri.Query); Assert.Equal(ContinueUrl, query["continueUrl"]); var idToken = await AuthIntegrationUtils.SignInWithEmailLinkAsync( diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index bb4dce40..5915c369 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -10,6 +10,7 @@ + all diff --git a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAuthSnippets.cs b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAuthSnippets.cs index b11974cd..1b316fd6 100644 --- a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAuthSnippets.cs +++ b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAuthSnippets.cs @@ -14,6 +14,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Threading.Tasks; using FirebaseAdmin.Auth; @@ -582,9 +583,10 @@ internal static async Task SetCustomUserClaimsIncrementalAsync() object isAdmin; if (user.CustomClaims.TryGetValue("admin", out isAdmin) && (bool)isAdmin) { - var claims = new Dictionary(user.CustomClaims); + var claims = user.CustomClaims.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); // Add level. - claims["level"] = 10; + var level = 10; + claims["level"] = level; // Add custom claims for additional privileges. await FirebaseAuth.DefaultInstance.SetCustomUserClaimsAsync(user.Uid, claims); } From fca310a9f2af66e38b099f15e8f03b295871d739 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 9 Feb 2024 13:01:17 -0500 Subject: [PATCH 06/24] fix script call --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c59c3a5d..2549e8bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: dotnet-version: ${{ matrix.dotnet-version }} - name: Build with dotnet - run: ./github/scripts/./builder.sh + run: .github/scripts/./builder.sh - name: Run unit tests run: | From e59dfadbcf67a8d845cab8d5d35c0a25995d9f54 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 12 Feb 2024 10:14:12 -0500 Subject: [PATCH 07/24] Refactor and update nightly and release workflows --- .github/scripts/builder.sh | 9 ------ .github/scripts/run_integration_tests.sh | 3 +- .github/workflows/ci.yml | 22 +++++++++------ .github/workflows/nightly.yml | 25 ++++++++++------ .github/workflows/release.yml | 36 ++++++++++++++++-------- 5 files changed, 56 insertions(+), 39 deletions(-) delete mode 100755 .github/scripts/builder.sh diff --git a/.github/scripts/builder.sh b/.github/scripts/builder.sh deleted file mode 100755 index 49f82bdd..00000000 --- a/.github/scripts/builder.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -e - -BUILD_CONFIGURATION=Release - -dotnet restore FirebaseAdmin/FirebaseAdmin.sln -dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore -dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration $BUILD_CONFIGURATION --no-restore \ No newline at end of file diff --git a/.github/scripts/run_integration_tests.sh b/.github/scripts/run_integration_tests.sh index 565986b8..3a249b62 100755 --- a/.github/scripts/run_integration_tests.sh +++ b/.github/scripts/run_integration_tests.sh @@ -25,4 +25,5 @@ gpg --quiet --batch --yes --decrypt --passphrase="${FIREBASE_SERVICE_ACCT_KEY}" echo "${FIREBASE_API_KEY}" > FirebaseAdmin/FirebaseAdmin.IntegrationTests/resources/integration_apikey.txt -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --no-build --framework netcoreapp3.1 --configuration Release +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --no-build --framework net6.0 --configuration Release diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2549e8bf..428f8993 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,29 +4,33 @@ on: pull_request jobs: build: - strategy: - matrix: - os: [ubuntu-latest] - dotnet-version: [ 3.1.x, 6.0.x ] + + runs-on: ubuntu-latest env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_NOLOGO: 1 - runs-on: ${{ matrix.os }} - steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup .NET + - name: Setup .NET 6 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 6.0.x + + - name: Setup .NET 3.1 uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ matrix.dotnet-version }} + dotnet-version: 3.1.x + + - name: Install dependencies + run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln - name: Build with dotnet - run: .github/scripts/./builder.sh + run: dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore - name: Run unit tests run: | diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 43094798..3c8a7505 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -34,32 +34,41 @@ jobs: steps: - name: Checkout source for staging - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: ${{ github.event.client_payload.ref || github.ref }} - - name: Setup .NET Core 2.1 - uses: actions/setup-dotnet@v1 + - name: Setup .NET 6.0 + uses: actions/setup-dotnet@v4 with: - dotnet-version: 2.1.x + dotnet-version: 6.0.x + + - name: Setup .NET Core 3.1 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 3.1.x - name: Install dependencies - run: dotnet msbuild /t:restore FirebaseAdmin + run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln - name: Build with dotnet - run: dotnet msbuild FirebaseAdmin/FirebaseAdmin + run: dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore - name: Run unit tests run: dotnet test FirebaseAdmin/FirebaseAdmin.Tests - name: Run integration tests - run: ./.github/scripts/run_integration_tests.sh + run: | + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release + env: FIREBASE_SERVICE_ACCT_KEY: ${{ secrets.FIREBASE_SERVICE_ACCT_KEY }} FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }} - name: Package release artifacts - run: dotnet pack -c Release FirebaseAdmin/FirebaseAdmin + run: dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore + # Attach the packaged artifacts to the workflow output. These can be manually # downloaded for later inspection if necessary. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d937c08d..4d166040 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,23 +46,30 @@ jobs: # via the 'ref' client parameter. steps: - name: Checkout source for staging - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: ${{ github.event.client_payload.ref || github.ref }} - - name: Setup .NET Core 2.1 - uses: actions/setup-dotnet@v1 + - name: Setup .NET 6 + uses: actions/setup-dotnet@v4 with: - dotnet-version: 2.1.x + dotnet-version: 6.0.x + + - name: Setup .NET Core 3.1 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 3.1.x - name: Install dependencies - run: dotnet msbuild /t:restore FirebaseAdmin + run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln - name: Build with dotnet - run: dotnet msbuild FirebaseAdmin/FirebaseAdmin + run: dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore - name: Run unit tests - run: dotnet test FirebaseAdmin/FirebaseAdmin.Tests + run: + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release - name: Run integration tests run: ./.github/scripts/run_integration_tests.sh @@ -71,7 +78,7 @@ jobs: FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }} - name: Package release artifacts - run: dotnet pack -c Release FirebaseAdmin/FirebaseAdmin + run: dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore # Attach the packaged artifacts to the workflow output. These can be manually # downloaded for later inspection if necessary. @@ -100,7 +107,7 @@ jobs: steps: - name: Checkout source for publish - uses: actions/checkout@v2 + uses: actions/checkout@v4 # Download the artifacts created by the stage_release job. - name: Download release candidates @@ -108,10 +115,15 @@ jobs: with: name: Release - - name: Setup .NET Core - uses: actions/setup-dotnet@v1 + - name: Setup .NET 6 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 6.0.x + + - name: Setup .NET Core 3.1 + uses: actions/setup-dotnet@v4 with: - dotnet-version: 2.2.108 + dotnet-version: 3.1.x - name: Publish preflight check id: preflight From c313add35e64696ac3ff83bfc75b5bdb2d6c8f57 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 12 Feb 2024 10:22:56 -0500 Subject: [PATCH 08/24] Trigger Integration Tests From e67dd70ffd4d403d56a4fda7e3df305aea6bc67a Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 12 Feb 2024 10:26:38 -0500 Subject: [PATCH 09/24] fix running unit tests in release stage --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4d166040..5bdff7a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -67,7 +67,7 @@ jobs: run: dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore - name: Run unit tests - run: + run: | dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release From 2634f5c00e1d18110dd4cb3a03c5d5b4fd23a1da Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 12 Feb 2024 11:39:26 -0500 Subject: [PATCH 10/24] fix build before running integration tests --- .github/scripts/run_integration_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/run_integration_tests.sh b/.github/scripts/run_integration_tests.sh index 3a249b62..ef26970a 100755 --- a/.github/scripts/run_integration_tests.sh +++ b/.github/scripts/run_integration_tests.sh @@ -25,5 +25,5 @@ gpg --quiet --batch --yes --decrypt --passphrase="${FIREBASE_SERVICE_ACCT_KEY}" echo "${FIREBASE_API_KEY}" > FirebaseAdmin/FirebaseAdmin.IntegrationTests/resources/integration_apikey.txt -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --no-build --framework netcoreapp3.1 --configuration Release -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --no-build --framework net6.0 --configuration Release +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --framework netcoreapp3.1 --configuration Release +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --framework net6.0 --configuration Release From 6b272083240886a25970da9e475b1950986dc3b1 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Tue, 13 Feb 2024 15:15:46 -0500 Subject: [PATCH 11/24] fix: revert to expected build name --- .github/workflows/ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 428f8993..5c294134 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,14 +4,17 @@ on: pull_request jobs: build: - - runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest] env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_NOLOGO: 1 + runs-on: ${{ matrix.os }} + steps: - name: Checkout code uses: actions/checkout@v4 From 4d0f6b754ec52ab0a64c8c69783e79b9d3779fed Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Tue, 13 Feb 2024 15:27:45 -0500 Subject: [PATCH 12/24] try only 3.1 --- .github/workflows/ci.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c294134..4203a901 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,10 +19,10 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup .NET 6 - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 6.0.x + # - name: Setup .NET 6 + # uses: actions/setup-dotnet@v4 + # with: + # dotnet-version: 6.0.x - name: Setup .NET 3.1 uses: actions/setup-dotnet@v4 @@ -37,5 +37,4 @@ jobs: - name: Run unit tests run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release \ No newline at end of file + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release \ No newline at end of file From fc80ada5afc544bca5311a04ae872792d2c45432 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Tue, 13 Feb 2024 15:31:46 -0500 Subject: [PATCH 13/24] try no specific version --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4203a901..97758ae9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,4 +37,4 @@ jobs: - name: Run unit tests run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release \ No newline at end of file + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release \ No newline at end of file From 57bc907b6990d4bf28d05039dca1e91826be1898 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Tue, 13 Feb 2024 15:47:41 -0500 Subject: [PATCH 14/24] fix set `Microsoft.NET.Test.Sdk` to 15.0.0 --- .../FirebaseAdmin.IntegrationTests.csproj | 2 +- FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index 5915c369..135fac17 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -9,7 +9,7 @@ - + diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index 4ccb434b..738ac84d 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -16,7 +16,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + From 44b0fd1c9a4f28efd5ef10507c148ad1201bf3fc Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Wed, 14 Feb 2024 11:44:57 -0500 Subject: [PATCH 15/24] Add Microsoft.TestPlatform.ObjectModel package for net462 --- .../FirebaseAdmin.IntegrationTests.csproj | 6 +++++- .../FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index 135fac17..563c59b2 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -9,7 +9,7 @@ - + @@ -22,6 +22,10 @@ + + + + diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index 738ac84d..0a2bb1fb 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -16,7 +16,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + @@ -29,6 +29,10 @@ + + + + From 6dbfbbd1922030d1523c0d891ca21ff4a52ce3a1 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Thu, 15 Feb 2024 12:42:29 -0500 Subject: [PATCH 16/24] fix: Update xunit Packages and remove Microsoft.TestPlatform.ObjectModel package for net462 --- .../FirebaseAdmin.IntegrationTests.csproj | 9 ++------- .../FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index 563c59b2..756ef7b9 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -11,8 +11,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -21,11 +21,6 @@ all - - - - - diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index 0a2bb1fb..d1f03cad 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -18,8 +18,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -28,11 +28,6 @@ all - - - - - From cd33cfdd830a843b191a03752ea1b81ea03ac5e6 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Thu, 15 Feb 2024 13:25:24 -0500 Subject: [PATCH 17/24] Fix: tests --- .../Auth/Jwt/ServiceAccountSignerTest.cs | 2 +- .../Auth/Multitenancy/TenantManagerTest.cs | 12 ++--- .../Auth/Providers/OidcProviderConfigTest.cs | 12 ++--- .../Auth/Users/EmailActionRequestTest.cs | 26 +++++----- .../Auth/Users/FirebaseUserManagerTest.cs | 50 +++++++++---------- .../Messaging/BatchResponseTest.cs | 2 +- 6 files changed, 52 insertions(+), 52 deletions(-) diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs index 10f54daa..21309907 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/ServiceAccountSignerTest.cs @@ -34,7 +34,7 @@ public async Task Signer() Assert.Equal( "client@test-project.iam.gserviceaccount.com", await signer.GetKeyIdAsync()); byte[] data = Encoding.UTF8.GetBytes("Hello world"); - byte[] signature = signer.SignDataAsync(data).Result; + byte[] signature = await signer.SignDataAsync(data); Assert.True(this.Verify(data, signature)); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs index 3e101ebb..25796e41 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantManagerTest.cs @@ -93,7 +93,7 @@ public async Task GetTenant(TestConfig config) var provider = await auth.TenantManager.GetTenantAsync("tenant1"); AssertTenant(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Get, request.Method); config.AssertRequest("tenants/tenant1", request); @@ -152,7 +152,7 @@ public async Task CreateTenant(TestConfig config) var provider = await auth.TenantManager.CreateTenantAsync(args); AssertTenant(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Post, request.Method); config.AssertRequest("tenants", request); @@ -178,7 +178,7 @@ public async Task CreateTenantMinimal(TestConfig config) var provider = await auth.TenantManager.CreateTenantAsync(new TenantArgs()); AssertTenant(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Post, request.Method); config.AssertRequest("tenants", request); @@ -239,7 +239,7 @@ public async Task UpdateTenant(TestConfig config) var provider = await auth.TenantManager.UpdateTenantAsync("tenant1", args); AssertTenant(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpUtils.Patch, request.Method); var mask = "allowPasswordSignup,displayName,enableEmailLinkSignin"; @@ -270,7 +270,7 @@ public async Task UpdateTenantMinimal(TestConfig config) var provider = await auth.TenantManager.UpdateTenantAsync("tenant1", args); AssertTenant(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpUtils.Patch, request.Method); config.AssertRequest("tenants/tenant1?updateMask=displayName", request); @@ -354,7 +354,7 @@ public async Task DeleteTenant(TestConfig config) await auth.TenantManager.DeleteTenantAsync("tenant1"); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Delete, request.Method); config.AssertRequest("tenants/tenant1", request); diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Providers/OidcProviderConfigTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Providers/OidcProviderConfigTest.cs index d68094f5..3dd8886f 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Providers/OidcProviderConfigTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Providers/OidcProviderConfigTest.cs @@ -72,7 +72,7 @@ public async Task GetConfig(ProviderTestConfig config) var provider = await auth.GetOidcProviderConfigAsync("oidc.provider"); this.AssertOidcProviderConfig(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Get, request.Method); config.AssertRequest("oauthIdpConfigs/oidc.provider", request); @@ -148,7 +148,7 @@ public async Task CreateConfig(ProviderTestConfig config) var provider = await auth.CreateProviderConfigAsync(args); this.AssertOidcProviderConfig(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Post, request.Method); config.AssertRequest("oauthIdpConfigs?oauthIdpConfigId=oidc.provider", request); @@ -184,7 +184,7 @@ public async Task CreateConfigMinimal(ProviderTestConfig config) var provider = await auth.CreateProviderConfigAsync(args); this.AssertOidcProviderConfig(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Post, request.Method); config.AssertRequest( @@ -271,7 +271,7 @@ public async Task UpdateConfig(ProviderTestConfig config) var provider = await auth.UpdateProviderConfigAsync(args); this.AssertOidcProviderConfig(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(ProviderTestConfig.PatchMethod, request.Method); var mask = "clientId,clientSecret,displayName,enabled,issuer,responseType.code,responseType.idToken"; @@ -307,7 +307,7 @@ public async Task UpdateConfigMinimal(ProviderTestConfig config) var provider = await auth.UpdateProviderConfigAsync(args); this.AssertOidcProviderConfig(provider); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(ProviderTestConfig.PatchMethod, request.Method); config.AssertRequest( @@ -382,7 +382,7 @@ public async Task DeleteConfig(ProviderTestConfig config) await auth.DeleteProviderConfigAsync("oidc.provider"); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = handler.Requests[0]; Assert.Equal(HttpMethod.Delete, request.Method); config.AssertRequest("oauthIdpConfigs/oidc.provider", request); diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs index 04af97ee..fe3a8ec4 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/EmailActionRequestTest.cs @@ -92,42 +92,42 @@ public class EmailActionRequestTest }; [Fact] - public void NoEmail() + public async void NoEmail() { var handler = new MockMessageHandler() { Response = GenerateEmailLinkResponse }; var auth = this.CreateFirebaseAuth(handler); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateEmailVerificationLinkAsync(null)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateEmailVerificationLinkAsync(string.Empty)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GeneratePasswordResetLinkAsync(null)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GeneratePasswordResetLinkAsync(string.Empty)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateSignInWithEmailLinkAsync(null, ActionCodeSettings)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateSignInWithEmailLinkAsync(string.Empty, ActionCodeSettings)); } [Theory] [MemberData(nameof(InvalidActionCodeSettingsArgs))] - public void InvalidActionCodeSettings(ActionCodeSettings settings) + public async void InvalidActionCodeSettings(ActionCodeSettings settings) { var handler = new MockMessageHandler() { Response = GenerateEmailLinkResponse }; var auth = this.CreateFirebaseAuth(handler); var email = "user@example.com"; - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateEmailVerificationLinkAsync(email, settings)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GeneratePasswordResetLinkAsync(email, settings)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateSignInWithEmailLinkAsync(email, settings)); } @@ -264,13 +264,13 @@ public async Task PasswordResetLinkUnexpectedResponse() } [Fact] - public void SignInWithEmailLinkNoSettings() + public async void SignInWithEmailLinkNoSettings() { var handler = new MockMessageHandler() { Response = GenerateEmailLinkResponse }; var auth = this.CreateFirebaseAuth(handler); var email = "user@example.com"; - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.GenerateSignInWithEmailLinkAsync(email, null)); } diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/FirebaseUserManagerTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/FirebaseUserManagerTest.cs index 84a37494..616a8120 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/FirebaseUserManagerTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Auth/Users/FirebaseUserManagerTest.cs @@ -564,7 +564,7 @@ public async Task ListUsersReadPage(TestConfig config) Assert.Equal("token", userPage.NextPageToken); Assert.Equal(3, userPage.Count()); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); config.AssertRequest( "accounts:batchGet?maxResults=3", Assert.Single(handler.Requests)); @@ -1302,7 +1302,7 @@ public async Task NullClaims(TestConfig config) [Theory] [MemberData(nameof(TestConfigs))] - public void ReservedClaims(TestConfig config) + public async void ReservedClaims(TestConfig config) { var handler = new MockMessageHandler(); var auth = config.CreateAuth(handler); @@ -1314,14 +1314,14 @@ public void ReservedClaims(TestConfig config) { key, "value" }, }; - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.SetCustomUserClaimsAsync("user1", customClaims)); } } [Theory] [MemberData(nameof(TestConfigs))] - public void UpdateUserNoUid(TestConfig config) + public async void UpdateUserNoUid(TestConfig config) { var handler = new MockMessageHandler(); var auth = config.CreateAuth(handler); @@ -1330,12 +1330,12 @@ public void UpdateUserNoUid(TestConfig config) { EmailVerified = true, }; - Assert.ThrowsAsync(async () => await auth.UpdateUserAsync(args)); + await Assert.ThrowsAsync(async () => await auth.UpdateUserAsync(args)); } [Theory] [MemberData(nameof(TestConfigs))] - public void UpdateUserInvalidUid(TestConfig config) + public async void UpdateUserInvalidUid(TestConfig config) { var handler = new MockMessageHandler(); var auth = config.CreateAuth(handler); @@ -1345,7 +1345,7 @@ public void UpdateUserInvalidUid(TestConfig config) EmailVerified = true, Uid = new string('a', 129), }; - Assert.ThrowsAsync(async () => await auth.UpdateUserAsync(args)); + await Assert.ThrowsAsync(async () => await auth.UpdateUserAsync(args)); } [Theory] @@ -1487,7 +1487,7 @@ public async Task UpdateUserShortPassword(TestConfig config) [Theory] [MemberData(nameof(TestConfigs))] - public void EmptyNameClaims(TestConfig config) + public async void EmptyNameClaims(TestConfig config) { var handler = new MockMessageHandler(); var auth = config.CreateAuth(handler); @@ -1496,13 +1496,13 @@ public void EmptyNameClaims(TestConfig config) { string.Empty, "value" }, }; - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.SetCustomUserClaimsAsync("user1", emptyClaims)); } [Theory] [MemberData(nameof(TestConfigs))] - public void LargeClaimsOverLimit(TestConfig config) + public async void LargeClaimsOverLimit(TestConfig config) { var handler = new MockMessageHandler(); var auth = config.CreateAuth(handler); @@ -1511,7 +1511,7 @@ public void LargeClaimsOverLimit(TestConfig config) { "testClaim", new string('a', 1001) }, }; - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.SetCustomUserClaimsAsync("user1", largeClaims)); } @@ -1721,7 +1721,7 @@ public async Task RevokeRefreshTokens(TestConfig config) await auth.RevokeRefreshTokensAsync("user1"); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = NewtonsoftJsonSerializer.Instance.Deserialize(handler.LastRequestBody); Assert.Equal(2, request.Count); Assert.Equal("user1", request["localId"]); @@ -1732,31 +1732,31 @@ public async Task RevokeRefreshTokens(TestConfig config) [Theory] [MemberData(nameof(TestConfigs))] - public void RevokeRefreshTokensNoUid(TestConfig config) + public async void RevokeRefreshTokensNoUid(TestConfig config) { var handler = new MockMessageHandler() { Response = CreateUserResponse }; var auth = config.CreateAuth(handler); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.RevokeRefreshTokensAsync(null)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.RevokeRefreshTokensAsync(string.Empty)); } [Theory] [MemberData(nameof(TestConfigs))] - public void RevokeRefreshTokensInvalidUid(TestConfig config) + public async void RevokeRefreshTokensInvalidUid(TestConfig config) { var auth = config.CreateAuth(new MockMessageHandler()); var uid = new string('a', 129); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.RevokeRefreshTokensAsync(uid)); } [Theory] [MemberData(nameof(MainTenantTestConfigs))] - public void CreateSessionCookieNoIdToken(TestConfig config) + public async void CreateSessionCookieNoIdToken(TestConfig config) { var handler = new MockMessageHandler() { Response = "{}" }; var auth = (FirebaseAuth)config.CreateAuth(handler); @@ -1765,31 +1765,31 @@ public void CreateSessionCookieNoIdToken(TestConfig config) ExpiresIn = TimeSpan.FromHours(1), }; - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.CreateSessionCookieAsync(null, options)); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.CreateSessionCookieAsync(string.Empty, options)); } [Theory] [MemberData(nameof(MainTenantTestConfigs))] - public void CreateSessionCookieNoOptions(TestConfig config) + public async void CreateSessionCookieNoOptions(TestConfig config) { var handler = new MockMessageHandler() { Response = "{}" }; var auth = (FirebaseAuth)config.CreateAuth(handler); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.CreateSessionCookieAsync("idToken", null)); } [Theory] [MemberData(nameof(MainTenantTestConfigs))] - public void CreateSessionCookieNoExpiresIn(TestConfig config) + public async void CreateSessionCookieNoExpiresIn(TestConfig config) { var handler = new MockMessageHandler() { Response = "{}" }; var auth = (FirebaseAuth)config.CreateAuth(handler); - Assert.ThrowsAsync( + await Assert.ThrowsAsync( async () => await auth.CreateSessionCookieAsync( "idToken", new SessionCookieOptions())); } @@ -1846,7 +1846,7 @@ public async Task CreateSessionCookie(TestConfig config) var result = await auth.CreateSessionCookieAsync(idToken, options); Assert.Equal("cookie", result); - Assert.Equal(1, handler.Requests.Count); + Assert.Single(handler.Requests); var request = NewtonsoftJsonSerializer.Instance.Deserialize(handler.LastRequestBody); Assert.Equal(2, request.Count); Assert.Equal(idToken, request["idToken"]); diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/BatchResponseTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/BatchResponseTest.cs index 71dd1d3a..77d56117 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/BatchResponseTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/BatchResponseTest.cs @@ -31,7 +31,7 @@ public void EmptyResponses() Assert.Equal(0, batchResponse.SuccessCount); Assert.Equal(0, batchResponse.FailureCount); - Assert.Equal(0, batchResponse.Responses.Count); + Assert.Empty(batchResponse.Responses); } [Fact] From 4d430fc97cc928c8009311a30b22eabe377ae2ee Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 16 Feb 2024 09:49:27 -0500 Subject: [PATCH 18/24] fix: added preprocessor directives to handle differences in tests between .net versions --- .../Messaging/FirebaseMessagingTest.cs | 14 ++++++++++++++ .../FirebaseAdmin.Tests/Messaging/MessageTest.cs | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs index 5541544d..564371bb 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingTest.cs @@ -99,9 +99,16 @@ public async Task SendMessageCancel() FirebaseApp.Create(new AppOptions() { Credential = MockCredential }); var canceller = new CancellationTokenSource(); canceller.Cancel(); + + #if NET6_0_OR_GREATER await Assert.ThrowsAsync( async () => await FirebaseMessaging.DefaultInstance.SendAsync( new Message() { Topic = "test-topic" }, canceller.Token)); + #else + await Assert.ThrowsAsync( + async () => await FirebaseMessaging.DefaultInstance.SendAsync( + new Message() { Topic = "test-topic" }, canceller.Token)); + #endif } [Fact] @@ -114,9 +121,16 @@ public async Task SendMessageCancelWithClientFactory() }); var canceller = new CancellationTokenSource(); canceller.Cancel(); + + #if NET6_0_OR_GREATER await Assert.ThrowsAsync( async () => await FirebaseMessaging.DefaultInstance.SendAsync( new Message() { Topic = "test-topic" }, canceller.Token)); + #else + await Assert.ThrowsAsync( + async () => await FirebaseMessaging.DefaultInstance.SendAsync( + new Message() { Topic = "test-topic" }, canceller.Token)); + #endif } [Fact] diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs index 96322fa3..d57d2a4c 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs @@ -339,7 +339,11 @@ public void AndroidConfig() "color", new JObject() { { "red", 0.6666667 }, + #if NET6_0_OR_GREATER { "green", 0.73333335 }, + #else + { "green", 0.733333349 }, + #endif { "blue", 0.8 }, { "alpha", 0.8666667 }, } From e215cb460a0b8d22f1ef014aa07815265e7026c8 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Thu, 22 Feb 2024 11:58:09 -0500 Subject: [PATCH 19/24] Add netcoreapp3.1, net7.0 and net8.0 --- .github/workflows/ci.yml | 10 +++++----- .../FirebaseAdmin.IntegrationTests.csproj | 6 +++--- .../FirebaseAdmin.Snippets.csproj | 2 +- .../FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj | 6 +++--- FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97758ae9..0335e011 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,10 +19,10 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - # - name: Setup .NET 6 - # uses: actions/setup-dotnet@v4 - # with: - # dotnet-version: 6.0.x + - name: Setup .NET 6 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 6.0.x - name: Setup .NET 3.1 uses: actions/setup-dotnet@v4 @@ -37,4 +37,4 @@ jobs: - name: Run unit tests run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release \ No newline at end of file + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --configuration Release \ No newline at end of file diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index 756ef7b9..dac50a09 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -1,7 +1,7 @@ - net462;net6.0 + netcoreapp3.1;net462;net6.0;net7.0;net8.0 latest false true @@ -11,8 +11,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj index 3595b444..9c5da1ee 100644 --- a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj @@ -1,7 +1,7 @@ - net462;net6.0 + netcoreapp3.1;net462;net6.0;net7.0;net8.0 false true ../../stylecop_test.ruleset diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index d1f03cad..083567a3 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -1,7 +1,7 @@  - net462;net6.0 + netcoreapp3.1;net462;net6.0;net7.0;net8.0 latest false ../../FirebaseAdmin.snk @@ -18,8 +18,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj b/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj index 1cbc8bee..526767ad 100644 --- a/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj +++ b/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj @@ -2,7 +2,7 @@ 2.4.0 - netstandard2.0;net462;net6.0 + netcoreapp3.1;netstandard2.0;net462;net6.0;net7.0;net8.0 latest true ../../FirebaseAdmin.snk From c56262b0c76a8d0e2bab70bfdc0661460304495c Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 23 Feb 2024 10:59:19 -0500 Subject: [PATCH 20/24] fix: Add conditional package references and tests for netcoreapp3.1 --- .../FirebaseAdmin.IntegrationTests.csproj | 15 ++++++++++++--- .../FirebaseAdmin.Tests.csproj | 17 ++++++++++++++--- .../Messaging/MessageTest.cs | 6 +++--- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index dac50a09..38a398b5 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -12,13 +12,22 @@ - + + + all + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index 083567a3..864d8508 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -19,15 +19,26 @@ - + + + all + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs index d57d2a4c..e25c7159 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs @@ -339,10 +339,10 @@ public void AndroidConfig() "color", new JObject() { { "red", 0.6666667 }, - #if NET6_0_OR_GREATER - { "green", 0.73333335 }, - #else + #if NETCOREAPP3_1 { "green", 0.733333349 }, + #else + { "green", 0.73333335 }, #endif { "blue", 0.8 }, { "alpha", 0.8666667 }, From 490a7cf70e1fb3fe97bfd2658724f345d1ed8709 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Fri, 23 Feb 2024 11:08:17 -0500 Subject: [PATCH 21/24] fix conditional test --- FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs index e25c7159..81c15381 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs @@ -339,7 +339,7 @@ public void AndroidConfig() "color", new JObject() { { "red", 0.6666667 }, - #if NETCOREAPP3_1 + #if NET462_OR_GREATER { "green", 0.733333349 }, #else { "green", 0.73333335 }, From bf69b912e1155cd2cb5688b52300d8240e07b496 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 26 Feb 2024 10:27:07 -0500 Subject: [PATCH 22/24] Update workflows --- .github/scripts/run_integration_tests.sh | 5 ++-- .github/workflows/ci.yml | 16 ++++++------ .github/workflows/nightly.yml | 22 +++++++--------- .github/workflows/release.yml | 32 +++++++++++------------- 4 files changed, 34 insertions(+), 41 deletions(-) diff --git a/.github/scripts/run_integration_tests.sh b/.github/scripts/run_integration_tests.sh index ef26970a..c5805e38 100755 --- a/.github/scripts/run_integration_tests.sh +++ b/.github/scripts/run_integration_tests.sh @@ -25,5 +25,6 @@ gpg --quiet --batch --yes --decrypt --passphrase="${FIREBASE_SERVICE_ACCT_KEY}" echo "${FIREBASE_API_KEY}" > FirebaseAdmin/FirebaseAdmin.IntegrationTests/resources/integration_apikey.txt -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --framework netcoreapp3.1 --configuration Release -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --framework net6.0 --configuration Release +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --no-restore --no-build --framework netcoreapp3.1 +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --no-restore --no-build --framework net462 +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --no-restore --no-build --framework net6.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0335e011..76787830 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] + framework-version: [netcoreapp3.1, net462, net6.0, net7.0, net8.0] env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 @@ -19,15 +20,14 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup .NET 6 + - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 6.0.x - - - name: Setup .NET 3.1 - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 3.1.x + dotnet-version: | + 3.1.x + 6.0.x + 7.0.x + 8.0.x - name: Install dependencies run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln @@ -37,4 +37,4 @@ jobs: - name: Run unit tests run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --configuration Release \ No newline at end of file + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release --no-restore --no-build --framework ${{ matrix.framework-version }} \ No newline at end of file diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 3c8a7505..ec14c043 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -38,15 +38,14 @@ jobs: with: ref: ${{ github.event.client_payload.ref || github.ref }} - - name: Setup .NET 6.0 + - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 6.0.x - - - name: Setup .NET Core 3.1 - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 3.1.x + dotnet-version: | + 3.1.x + 6.0.x + 7.0.x + 8.0.x - name: Install dependencies run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln @@ -55,19 +54,16 @@ jobs: run: dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore - name: Run unit tests - run: dotnet test FirebaseAdmin/FirebaseAdmin.Tests + run: dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release --no-restore --no-build - name: Run integration tests - run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release - + run: ./.github/scripts/run_integration_tests.sh env: FIREBASE_SERVICE_ACCT_KEY: ${{ secrets.FIREBASE_SERVICE_ACCT_KEY }} FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }} - name: Package release artifacts - run: dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore + run: dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore --no-build # Attach the packaged artifacts to the workflow output. These can be manually diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5bdff7a8..c0105958 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,15 +50,14 @@ jobs: with: ref: ${{ github.event.client_payload.ref || github.ref }} - - name: Setup .NET 6 + - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 6.0.x - - - name: Setup .NET Core 3.1 - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 3.1.x + dotnet-version: | + 3.1.x + 6.0.x + 7.0.x + 8.0.x - name: Install dependencies run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln @@ -67,9 +66,7 @@ jobs: run: dotnet build FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore - name: Run unit tests - run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework netcoreapp3.1 --configuration Release - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --no-build --framework net6.0 --configuration Release + run: dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release --no-restore --no-build - name: Run integration tests run: ./.github/scripts/run_integration_tests.sh @@ -78,7 +75,7 @@ jobs: FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }} - name: Package release artifacts - run: dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore + run: dotnet pack FirebaseAdmin/FirebaseAdmin.sln --configuration Release --no-restore --no-build # Attach the packaged artifacts to the workflow output. These can be manually # downloaded for later inspection if necessary. @@ -115,15 +112,14 @@ jobs: with: name: Release - - name: Setup .NET 6 - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 6.0.x - - - name: Setup .NET Core 3.1 + - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 3.1.x + dotnet-version: | + 3.1.x + 6.0.x + 7.0.x + 8.0.x - name: Publish preflight check id: preflight From 5fd334ad3a520bccd9419d867370c39b0732d3db Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 26 Feb 2024 10:31:57 -0500 Subject: [PATCH 23/24] fix: build before running integration tests --- .github/scripts/run_integration_tests.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/scripts/run_integration_tests.sh b/.github/scripts/run_integration_tests.sh index c5805e38..e77909d1 100755 --- a/.github/scripts/run_integration_tests.sh +++ b/.github/scripts/run_integration_tests.sh @@ -25,6 +25,6 @@ gpg --quiet --batch --yes --decrypt --passphrase="${FIREBASE_SERVICE_ACCT_KEY}" echo "${FIREBASE_API_KEY}" > FirebaseAdmin/FirebaseAdmin.IntegrationTests/resources/integration_apikey.txt -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --no-restore --no-build --framework netcoreapp3.1 -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --no-restore --no-build --framework net462 -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --no-restore --no-build --framework net6.0 +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --framework netcoreapp3.1 +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --framework net462 +dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --framework net6.0 From 17895177b2d090ee2c5ca591a525491326f6ae18 Mon Sep 17 00:00:00 2001 From: Jonathan Edey Date: Mon, 25 Mar 2024 09:51:33 -0400 Subject: [PATCH 24/24] Removed netcoreap3.1 and redundant net7 and net8 --- .github/scripts/run_integration_tests.sh | 1 - .github/workflows/ci.yml | 10 +++------- .github/workflows/nightly.yml | 6 +----- .github/workflows/release.yml | 12 ++---------- .../FirebaseAdmin.IntegrationTests.csproj | 15 +++------------ .../FirebaseAdmin.Snippets.csproj | 2 +- .../FirebaseAdmin.Tests.csproj | 17 +++-------------- .../Messaging/MessageTest.cs | 6 +++--- .../FirebaseAdmin/FirebaseAdmin.csproj | 2 +- 9 files changed, 17 insertions(+), 54 deletions(-) diff --git a/.github/scripts/run_integration_tests.sh b/.github/scripts/run_integration_tests.sh index e77909d1..9caee954 100755 --- a/.github/scripts/run_integration_tests.sh +++ b/.github/scripts/run_integration_tests.sh @@ -25,6 +25,5 @@ gpg --quiet --batch --yes --decrypt --passphrase="${FIREBASE_SERVICE_ACCT_KEY}" echo "${FIREBASE_API_KEY}" > FirebaseAdmin/FirebaseAdmin.IntegrationTests/resources/integration_apikey.txt -dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --framework netcoreapp3.1 dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --framework net462 dotnet test FirebaseAdmin/FirebaseAdmin.IntegrationTests --configuration Release --framework net6.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76787830..0cdf1e6c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - framework-version: [netcoreapp3.1, net462, net6.0, net7.0, net8.0] + framework-version: [net462, net6.0] env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 @@ -23,11 +23,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: | - 3.1.x - 6.0.x - 7.0.x - 8.0.x + dotnet-version: 6.0.x - name: Install dependencies run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln @@ -37,4 +33,4 @@ jobs: - name: Run unit tests run: | - dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release --no-restore --no-build --framework ${{ matrix.framework-version }} \ No newline at end of file + dotnet test FirebaseAdmin/FirebaseAdmin.Tests --configuration Release --no-restore --no-build --framework ${{ matrix.framework-version }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ec14c043..2c3e4889 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -41,11 +41,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: | - 3.1.x - 6.0.x - 7.0.x - 8.0.x + dotnet-version: 6.0.x - name: Install dependencies run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c0105958..d252e615 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,11 +53,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: | - 3.1.x - 6.0.x - 7.0.x - 8.0.x + dotnet-version: 6.0.x - name: Install dependencies run: dotnet restore FirebaseAdmin/FirebaseAdmin.sln @@ -115,11 +111,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: | - 3.1.x - 6.0.x - 7.0.x - 8.0.x + dotnet-version: 6.0.x - name: Publish preflight check id: preflight diff --git a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj index 38a398b5..2ac51960 100644 --- a/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.IntegrationTests/FirebaseAdmin.IntegrationTests.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1;net462;net6.0;net7.0;net8.0 + net462;net6.0 latest false true @@ -12,22 +12,13 @@ - - - all - - - all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + all - runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj index 9c5da1ee..3564f4d1 100644 --- a/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Snippets/FirebaseAdmin.Snippets.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1;net462;net6.0;net7.0;net8.0 + net462;net6.0; false true ../../stylecop_test.ruleset diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj index 864d8508..45566a4b 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj +++ b/FirebaseAdmin/FirebaseAdmin.Tests/FirebaseAdmin.Tests.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1;net462;net6.0;net7.0;net8.0 + net462;net6.0 latest false ../../FirebaseAdmin.snk @@ -19,26 +19,15 @@ - - - all - - - - all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + all - runtime; build; native; contentfiles; analyzers; buildtransitive - diff --git a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs index 81c15381..d57d2a4c 100644 --- a/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs +++ b/FirebaseAdmin/FirebaseAdmin.Tests/Messaging/MessageTest.cs @@ -339,10 +339,10 @@ public void AndroidConfig() "color", new JObject() { { "red", 0.6666667 }, - #if NET462_OR_GREATER - { "green", 0.733333349 }, - #else + #if NET6_0_OR_GREATER { "green", 0.73333335 }, + #else + { "green", 0.733333349 }, #endif { "blue", 0.8 }, { "alpha", 0.8666667 }, diff --git a/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj b/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj index 526767ad..1cbc8bee 100644 --- a/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj +++ b/FirebaseAdmin/FirebaseAdmin/FirebaseAdmin.csproj @@ -2,7 +2,7 @@ 2.4.0 - netcoreapp3.1;netstandard2.0;net462;net6.0;net7.0;net8.0 + netstandard2.0;net462;net6.0 latest true ../../FirebaseAdmin.snk