private async Task ParameterizedAXTestAsync(AXAttributeFormats format)
        {
            var axInjected = new FetchRequest();

            axInjected.Attributes.AddOptional(ExtensionsInteropHelper.TransformAXFormatTestHook(WellKnownAttributes.Name.Alias, format));
            axInjected.Attributes.AddRequired(ExtensionsInteropHelper.TransformAXFormatTestHook(WellKnownAttributes.Name.FullName, format));
            this.extensions.Add(axInjected);
            var sreg = ExtensionsInteropHelper.UnifyExtensionsAsSreg(this.request);

            Assert.AreSame(sreg, this.request.GetExtension <ClaimsRequest>());
            Assert.AreEqual(DemandLevel.Request, sreg.Nickname);
            Assert.AreEqual(DemandLevel.Require, sreg.FullName);
            Assert.AreEqual(DemandLevel.NoRequest, sreg.Language);

            var sregResponse = sreg.CreateResponse();

            sregResponse.Nickname = "andy";
            this.request.AddResponseExtension(sregResponse);
            await ExtensionsInteropHelper.ConvertSregToMatchRequestAsync(this.request, CancellationToken.None);

            var extensions = await this.GetResponseExtensionsAsync();

            var axResponse = extensions.OfType <FetchResponse>().Single();

            Assert.AreEqual("andy", axResponse.GetAttributeValue(ExtensionsInteropHelper.TransformAXFormatTestHook(WellKnownAttributes.Name.Alias, format)));
        }
        public async Task NoRequestedExtensions()
        {
            var sreg = ExtensionsInteropHelper.UnifyExtensionsAsSreg(this.request);

            Assert.IsNull(sreg);

            // Make sure we're still able to send an sreg response.
            // (not really a valid scenario, since OPs don't have public access
            // to directly create a response without a request.
            var sregResponse = new ClaimsResponse();

            this.request.AddResponseExtension(sregResponse);
            await ExtensionsInteropHelper.ConvertSregToMatchRequestAsync(this.request, CancellationToken.None);

            var extensions = await this.GetResponseExtensionsAsync();

            Assert.AreSame(sregResponse, extensions.Single());
        }
        public async Task UnifyExtensionsAsSregWithSreg()
        {
            var sregInjected = new ClaimsRequest(DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.Constants.TypeUris.Standard)
            {
                Nickname = DemandLevel.Request,
            };

            this.extensions.Add(sregInjected);
            var sreg = ExtensionsInteropHelper.UnifyExtensionsAsSreg(this.request);

            Assert.AreSame(sregInjected, sreg);
            Assert.AreEqual(DemandLevel.Request, sreg.Nickname);
            Assert.AreEqual(DemandLevel.NoRequest, sreg.FullName);

            var sregResponse = sreg.CreateResponse();

            this.request.AddResponseExtension(sregResponse);
            await ExtensionsInteropHelper.ConvertSregToMatchRequestAsync(this.request, CancellationToken.None);

            var extensions = await this.GetResponseExtensionsAsync();

            Assert.AreSame(sregResponse, extensions.Single());
        }
        public async Task UnifyExtensionsAsSregWithBothSregAndAX()
        {
            var sregInjected = new ClaimsRequest(DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.Constants.TypeUris.Standard)
            {
                Nickname = DemandLevel.Request,
            };

            this.extensions.Add(sregInjected);
            var axInjected = new FetchRequest();

            axInjected.Attributes.AddOptional(WellKnownAttributes.Contact.Email);
            this.extensions.Add(axInjected);
            var sreg = ExtensionsInteropHelper.UnifyExtensionsAsSreg(this.request);

            Assert.AreSame(sregInjected, sreg);
            Assert.AreEqual(DemandLevel.Request, sreg.Nickname);
            Assert.AreEqual(DemandLevel.NoRequest, sreg.Email);

            var sregResponseInjected = sreg.CreateResponse();

            sregResponseInjected.Nickname = "andy";
            this.request.AddResponseExtension(sregResponseInjected);
            var axResponseInjected = new FetchResponse();

            axResponseInjected.Attributes.Add(WellKnownAttributes.Contact.Email, "*****@*****.**");
            this.request.AddResponseExtension(axResponseInjected);
            await ExtensionsInteropHelper.ConvertSregToMatchRequestAsync(this.request, CancellationToken.None);

            var extensions = await this.GetResponseExtensionsAsync();

            var sregResponse = extensions.OfType <ClaimsResponse>().Single();

            Assert.AreEqual("andy", sregResponse.Nickname);
            var axResponse = extensions.OfType <FetchResponse>().Single();

            Assert.AreEqual("*****@*****.**", axResponse.GetAttributeValue(WellKnownAttributes.Contact.Email));
        }
 public async Task NegativeResponse()
 {
     this.request.IsAuthenticated = false;
     await ExtensionsInteropHelper.ConvertSregToMatchRequestAsync(this.request, CancellationToken.None);
 }