Esempio n. 1
0
        public void AddTwoAttributes()
        {
            var response = new FetchResponse();

            response.AddAttribute(new AttributeValues("http://someattribute", "Value1"));
            response.AddAttribute(new AttributeValues("http://someOtherAttribute", "Value2"));
        }
Esempio n. 2
0
        public void AddAttributeTwice()
        {
            var response = new FetchResponse();

            response.AddAttribute(new AttributeValues("http://someattribute", "Value1"));
            response.AddAttribute(new AttributeValues("http://someattribute", "Value1"));
        }
Esempio n. 3
0
        public void AddAttributeNull()
        {
            var response = new FetchResponse();

            response.AddAttribute(null);
        }
Esempio n. 4
0
        private void ExtensionsResponder(OPRequest request)
        {
            var sregRequest  = request.GetExtension <ClaimsRequest>();
            var sregResponse = sregRequest != null?sregRequest.CreateResponse() : null;

            var aeFetchRequest  = request.GetExtension <FetchRequest>();
            var aeFetchResponse = new FetchResponse();
            var aeStoreRequest  = request.GetExtension <StoreRequest>();
            var aeStoreResponse = new StoreResponse();
            var papeRequest     = request.GetExtension <PolicyRequest>();
            var papeResponse    = new PolicyResponse();

            TestSupport.Scenarios scenario = (TestSupport.Scenarios)Enum.Parse(typeof(TestSupport.Scenarios),
                                                                               new Uri(request.LocalIdentifier).AbsolutePath.TrimStart('/'));
            switch (scenario)
            {
            case TestSupport.Scenarios.ExtensionFullCooperation:
                if (sregRequest != null)
                {
                    if (sregRequest.FullName != SregDemandLevel.NoRequest)
                    {
                        sregResponse.FullName = "Andrew Arnott";
                    }
                    if (sregRequest.Email != SregDemandLevel.NoRequest)
                    {
                        sregResponse.Email = "*****@*****.**";
                    }
                }
                if (aeFetchRequest != null)
                {
                    var att = aeFetchRequest.GetAttribute(nicknameTypeUri);
                    if (att != null)
                    {
                        aeFetchResponse.AddAttribute(att.Respond("Andrew"));
                    }
                    att = aeFetchRequest.GetAttribute(emailTypeUri);
                    if (att != null)
                    {
                        string[] emails = new[] { "*****@*****.**", "*****@*****.**" };
                        string[] subset = new string[Math.Min(emails.Length, att.Count)];
                        Array.Copy(emails, subset, subset.Length);
                        aeFetchResponse.AddAttribute(att.Respond(subset));
                    }
                    foreach (var att2 in aeFetchRequest.Attributes)
                    {
                        if (storedAttributes.ContainsKey(att2.TypeUri))
                        {
                            aeFetchResponse.AddAttribute(storedAttributes[att2.TypeUri]);
                        }
                    }
                }
                if (papeRequest != null)
                {
                    if (papeRequest.MaximumAuthenticationAge.HasValue)
                    {
                        papeResponse.AuthenticationTimeUtc = DateTime.UtcNow - (papeRequest.MaximumAuthenticationAge.Value - TimeSpan.FromSeconds(30));
                    }
                    if (papeRequest.PreferredAuthLevelTypes.Contains(PapeConstants.AuthenticationLevels.NistTypeUri))
                    {
                        papeResponse.NistAssuranceLevel = NistAssuranceLevel.Level1;
                    }
                }
                break;

            case TestSupport.Scenarios.ExtensionPartialCooperation:
                if (sregRequest != null)
                {
                    if (sregRequest.FullName == SregDemandLevel.Require)
                    {
                        sregResponse.FullName = "Andrew Arnott";
                    }
                    if (sregRequest.Email == SregDemandLevel.Require)
                    {
                        sregResponse.Email = "*****@*****.**";
                    }
                }
                if (aeFetchRequest != null)
                {
                    var att = aeFetchRequest.GetAttribute(nicknameTypeUri);
                    if (att != null && att.IsRequired)
                    {
                        aeFetchResponse.AddAttribute(att.Respond("Andrew"));
                    }
                    att = aeFetchRequest.GetAttribute(emailTypeUri);
                    if (att != null && att.IsRequired)
                    {
                        string[] emails = new[] { "*****@*****.**", "*****@*****.**" };
                        string[] subset = new string[Math.Min(emails.Length, att.Count)];
                        Array.Copy(emails, subset, subset.Length);
                        aeFetchResponse.AddAttribute(att.Respond(subset));
                    }
                    foreach (var att2 in aeFetchRequest.Attributes)
                    {
                        if (att2.IsRequired && storedAttributes.ContainsKey(att2.TypeUri))
                        {
                            aeFetchResponse.AddAttribute(storedAttributes[att2.TypeUri]);
                        }
                    }
                }
                break;
            }
            if (aeStoreRequest != null)
            {
                foreach (var att in aeStoreRequest.Attributes)
                {
                    storedAttributes[att.TypeUri] = att;
                }
                aeStoreResponse.Succeeded = true;
            }

            if (sregRequest != null)
            {
                request.AddResponseExtension(sregResponse);
            }
            if (aeFetchRequest != null)
            {
                request.AddResponseExtension(aeFetchResponse);
            }
            if (aeStoreRequest != null)
            {
                request.AddResponseExtension(aeStoreResponse);
            }
            if (papeRequest != null)
            {
                request.AddResponseExtension(papeResponse);
            }
        }