internal static async Task CreateOidcProviderConfig()
        {
            // [START create_oidc_provider]
            var args = new OidcProviderConfigArgs()
            {
                DisplayName = "OIDC provider name",
                Enabled     = true,
                ProviderId  = "oidc.myProvider",
                ClientId    = "CLIENT_ID2",
                Issuer      = "https://oidc.com/CLIENT_ID2",
            };
            OidcProviderConfig oidc = await FirebaseAuth.DefaultInstance
                                      .CreateProviderConfigAsync(args);

            Console.WriteLine($"Created new OIDC provider: {oidc.ProviderId}");
            // [END create_oidc_provider]
        }
        public async Task UpdateProviderConfig()
        {
            var args = new OidcProviderConfigArgs
            {
                ProviderId  = this.providerId,
                DisplayName = "UPDATED_OIDC_DISPLAY_NAME",
                Enabled     = false,
                ClientId    = "UPDATED_OIDC_CLIENT_ID",
                Issuer      = "https://oidc.com/updated-issuer",
            };

            var config = await this.auth.UpdateProviderConfigAsync(args);

            Assert.Equal(this.providerId, config.ProviderId);
            Assert.Equal("UPDATED_OIDC_DISPLAY_NAME", config.DisplayName);
            Assert.False(config.Enabled);
            Assert.Equal("UPDATED_OIDC_CLIENT_ID", config.ClientId);
            Assert.Equal("https://oidc.com/updated-issuer", config.Issuer);
        }
        public async Task UpdateConfig(ProviderTestConfig config)
        {
            var handler = new MockMessageHandler()
            {
                Response = OidcProviderConfigResponse,
            };
            var auth = config.CreateAuth(handler);
            var args = new OidcProviderConfigArgs()
            {
                ProviderId          = "oidc.provider",
                DisplayName         = "oidcProviderName",
                Enabled             = true,
                ClientId            = "CLIENT_ID",
                Issuer              = "https://oidc.com/issuer",
                ClientSecret        = "CLIENT_SECRET",
                CodeResponseType    = true,
                IdTokenResponseType = true,
            };

            var provider = await auth.UpdateProviderConfigAsync(args);

            this.AssertOidcProviderConfig(provider);
            Assert.Equal(1, handler.Requests.Count);
            var request = handler.Requests[0];

            Assert.Equal(ProviderTestConfig.PatchMethod, request.Method);
            var mask = "clientId,clientSecret,displayName,enabled,issuer,responseType.code,responseType.idToken";

            config.AssertRequest($"oauthIdpConfigs/oidc.provider?updateMask={mask}", request);

            var body = NewtonsoftJsonSerializer.Instance.Deserialize <JObject>(
                handler.LastRequestBody);

            Assert.Equal(6, body.Count);
            Assert.Equal("oidcProviderName", body["displayName"]);
            Assert.True((bool)body["enabled"]);
            Assert.Equal("CLIENT_ID", body["clientId"]);
            Assert.Equal("https://oidc.com/issuer", body["issuer"]);
            Assert.Equal("CLIENT_SECRET", body["clientSecret"]);
            Assert.True((bool)body["responseType"]["code"]);
            Assert.True((bool)body["responseType"]["idToken"]);
        }
        public async Task UpdateConfig()
        {
            var handler = new MockMessageHandler()
            {
                Response = OidcProviderConfigResponse,
            };
            var auth = ProviderConfigTestUtils.CreateFirebaseAuth(handler);
            var args = new OidcProviderConfigArgs()
            {
                ProviderId = "oidc.provider",
                DisplayName = "oidcProviderName",
                Enabled = true,
                ClientId = "CLIENT_ID",
                Issuer = "https://oidc.com/issuer",
            };

            var provider = await auth.UpdateProviderConfigAsync(args);

            this.AssertOidcProviderConfig(provider);
            Assert.Equal(1, handler.Requests.Count);
            var request = handler.Requests[0];
            Assert.Equal(ProviderConfigTestUtils.PatchMethod, request.Method);
            var mask = "clientId,displayName,enabled,issuer";
            Assert.Equal(
                $"/v2/projects/project1/oauthIdpConfigs/oidc.provider?updateMask={mask}",
                request.Url.PathAndQuery);
            ProviderConfigTestUtils.AssertClientVersionHeader(request);

            var body = NewtonsoftJsonSerializer.Instance.Deserialize<JObject>(
                handler.LastRequestBody);
            Assert.Equal(4, body.Count);
            Assert.Equal("oidcProviderName", body["displayName"]);
            Assert.True((bool)body["enabled"]);
            Assert.Equal("CLIENT_ID", body["clientId"]);
            Assert.Equal("https://oidc.com/issuer", body["issuer"]);
        }