Пример #1
0
        public void Constructor_ShouldAllowGeofencesAndDeviceIntegrity()
        {
            var policy = new AuthPolicy(null, null, null, null, true, new List <AuthPolicy.Location>
            {
                new AuthPolicy.Location
                {
                    Latitude  = 13.37,
                    Longitude = 44.44,
                    Radius    = 10
                }
            }
                                        );

            Assert.IsTrue(policy.Factors != null);
            Assert.IsTrue(policy.Factors.Count == 2);

            var deviceFactor = policy.Factors.Single(f => f.Factor == AuthPolicy.FactorType.DeviceIntegrity);
            var geoFactor    = policy.Factors.Single(f => f.Factor == AuthPolicy.FactorType.Geofence);

            Assert.IsTrue(geoFactor.Factor == AuthPolicy.FactorType.Geofence);
            Assert.IsTrue(geoFactor.Priority == 1);
            Assert.IsTrue(geoFactor.Requirement == AuthPolicy.FactorRequirementType.ForcedRequirement);
            Assert.IsTrue(geoFactor.Attributes != null);
            Assert.IsTrue(geoFactor.Attributes.Locations != null);

            Assert.IsTrue(Math.Abs(geoFactor.Attributes.Locations[0].Latitude - 13.37) < 0.01);
            Assert.IsTrue(Math.Abs(geoFactor.Attributes.Locations[0].Longitude - 44.44) < 0.01);
            Assert.IsTrue(Math.Abs(geoFactor.Attributes.Locations[0].Radius - 10) < 0.01);

            Assert.IsTrue(deviceFactor.Factor == AuthPolicy.FactorType.DeviceIntegrity);
            Assert.IsTrue(deviceFactor.Requirement == AuthPolicy.FactorRequirementType.ForcedRequirement);
        }
        public void Authorize(string userId, string context, AuthPolicy authPolicy)
        {
            var authRequest = GetServiceClientForCurrentService()
                              .CreateAuthorizationRequest(userId, context, authPolicy);

            _lastAuthorizationRequest = authRequest;
        }
Пример #3
0
        public static void RSClientPutFileWithCRC32()
        {
            Console.WriteLine("\n===> RSClientPutFileWithCRC32 Generate CRC32");
            UInt32 crc = CRC32.CheckSumFile(localFile);

            Console.WriteLine("CRC32: " + crc.ToString());

            Console.WriteLine("\n===> RSClientPutFileWithCRC32 Generate UpToken");
            var    authPolicy = new AuthPolicy(bucketName, 3600);
            string upToken    = authPolicy.MakeAuthTokenString();

            Console.WriteLine("upToken: " + upToken);

            Console.WriteLine("\n===> RSClient.PutFileWithUpToken(CRC32)");
            PutFileRet putFileRet = RSClient.PutFileWithUpToken(upToken, bucketName, key, null, localFile, null, "key=<key>", crc);

            PrintRet(putFileRet);
            if (putFileRet.OK)
            {
                Console.WriteLine("Hash: " + putFileRet.Hash);
            }
            else
            {
                Console.WriteLine("Failed to RSClient.PutFileWithUpToken(CRC32)");
            }
        }
Пример #4
0
        public void Constructor_ShouldIncludeAny()
        {
            var policy = new AuthPolicy(99, null, null, null, null, null);

            Assert.IsTrue(policy.MinimumRequirements != null);
            Assert.IsTrue(policy.MinimumRequirements.Count == 1);
            Assert.IsTrue(policy.MinimumRequirements[0].Any == 99);
        }
Пример #5
0
 private void SetAuthenticationScheme(string type)
 {
     _method.getHostAuthState().setAuthScheme(AuthPolicy.getAuthScheme(type));
     if (type != null && type.ToLower() == AuthPolicy.NEGOTIATE.ToLower())
     {
         _method.getParams().setParameter(CredentialsProvider__Finals.PROVIDER, new HTTPClientCredentialsBridge(DefaultCredentialsProvider));
         _method.getParams().setParameter(NegotiateScheme.SPN_LIST_PARAM, SPNProviders);
     }
 }
Пример #6
0
        public void Constructor_ShouldIncludeFlags()
        {
            var policy = new AuthPolicy(null, null, true, null, null, null);

            Assert.IsTrue(policy.MinimumRequirements[0].Inherence == 1);
            Assert.IsTrue(policy.MinimumRequirements[0].Possession == null);
            Assert.IsTrue(policy.MinimumRequirements[0].Knowledge == null);
            Assert.IsTrue(!policy.MinimumRequirements[0].Any.HasValue);
        }
Пример #7
0
 public LoadBalancingOfflineTests(string schemeName, AuthPolicy authPolicy)
     : base(new OfflineConnectPolicy(GetAuthScheme(schemeName)), authPolicy)
 {
     if (schemeName == "TokenAuthNoUserIds")
     {
         this.Player1 = null;
         this.Player2 = null;
         this.Player3 = null;
     }
 }
Пример #8
0
 public LoadbalancingOnlineTests(string schemeName, AuthPolicy authPolicy, ConnectionProtocol protocol)
     : base(new OnlineConnectPolicy(GetAuthScheme(schemeName), protocol), AuthPolicy.AuthOnNameServer)
 {
     if (schemeName == "TokenAuthNoUserIds")
     {
         this.Player1 = null;
         this.Player2 = null;
         this.Player3 = null;
     }
 }
Пример #9
0
        public void Serialization_MapperMapsNoMinimumRequirementsAndNoFactorsWhenNoneAreSpecified()
        {
            var expected =
                "{" +
                "\"minimum_requirements\":[]," +
                "\"factors\":[]" +
                "}";

            var policy = new AuthPolicy(null, null, null, null, null, null, null);
            var actual = new JsonNetJsonEncoder().EncodeObject(policy);

            Assert.AreEqual(expected, actual);
        }
Пример #10
0
        public void Serialization_ObjectParsesMinimumRequirementsAllOnlyWhenOnlySpecified()
        {
            var json =
                "{" +
                "\"minimum_requirements\":[{" +
                "\"requirement\":\"authenticated\"," +
                "\"any\":2" +
                "}]," +
                "\"factors\":[]" +
                "}";
            var expected = new AuthPolicy(2, null, null, null, null, null);
            var actual   = new JsonNetJsonEncoder().DecodeObject <AuthPolicy>(json);

            actual.ShouldCompare(expected);
        }
    private AuthPolicy generatePolicy(string principalId, string effect, string resource)
    {
        AuthPolicy authResponse = new AuthPolicy();

        authResponse.policyDocument           = new PolicyDocument();
        authResponse.policyDocument.Version   = "2012-10-17";  // default version
        authResponse.policyDocument.Statement = new Statement[1];
        Statement statementOne = new Statement();

        statementOne.Action   = "execute-api:Invoke";   // default action
        statementOne.Effect   = effect;
        statementOne.Resource = resource;
        authResponse.policyDocument.Statement[0] = statementOne;
        return(authResponse);
    }
Пример #12
0
        public void Constructor_ShouldSetProperties()
        {
            var authPolicy = new AuthPolicy(null, null, null, null, null, null);
            var o          = new ServiceV3AuthsPostRequest("un", authPolicy, "ctx", "title", 999, "Push Title", "Push Body", new List <DenialReason> {
                new DenialReason("1", "a", true)
            });

            Assert.AreSame(o.AuthPolicy, authPolicy);
            Assert.AreEqual(o.Context, "ctx");
            Assert.AreEqual(o.Username, "un");
            Assert.AreEqual(o.Title, "title");
            Assert.AreEqual(o.TTL, 999);
            Assert.AreEqual(o.PushTitle, "Push Title");
            Assert.AreEqual(o.PushBody, "Push Body");
            Assert.AreEqual(o.DenialReasons[0], new DenialReason("1", "a", true));
        }
Пример #13
0
        public void Constructor_ShouldCreateTimeFences()
        {
            var timeFence  = new AuthPolicy.TimeFence("fence", new List <string> {
            }, 1, 5, 0, 0, "America/New York");
            var timeFences = new List <AuthPolicy.TimeFence>
            {
                timeFence
            };

            var policy = new AuthPolicy(null, null, null, null, null, null, timeFences);

            Assert.IsTrue(policy.Factors.Count == 1);
            Assert.IsTrue(policy.Factors[0].Factor == AuthPolicy.FactorType.TimeFence);
            Assert.IsTrue(policy.Factors[0].Priority == 1);
            Assert.IsTrue(policy.Factors[0].Requirement == AuthPolicy.FactorRequirementType.ForcedRequirement);
            Assert.AreEqual(timeFence, policy.Factors[0].Attributes.TimeFences[0]);
        }
Пример #14
0
        public void Serialization_ObjectParsesMinimumRequirementsTypesOnlyWhenOnlySpecified()
        {
            var json =
                "{" +
                "\"minimum_requirements\":[{" +
                "\"requirement\":\"authenticated\"," +
                "\"knowledge\":1," +
                "\"inherence\":1," +
                "\"possession\":1" +
                "}]," +
                "\"factors\":[]" +
                "}";
            var expected = new AuthPolicy(null, true, true, true, null, null);
            var actual   = new JsonNetJsonEncoder().DecodeObject <AuthPolicy>(json);

            actual.ShouldCompare(expected);
        }
Пример #15
0
        public static void ResumablePutFile()
        {
            Console.WriteLine("\n===> ResumablePut.PutFile");
            var           authPolicy = new AuthPolicy(bucketName, 3600);
            string        upToken    = authPolicy.MakeAuthTokenString();
            PutAuthClient client     = new PutAuthClient(upToken);
            PutFileRet    putFileRet = ResumablePut.PutFile(client, bucketName, bigkey, null, bigFile, null, "key=<key>");

            PrintRet(putFileRet);
            if (putFileRet.OK)
            {
                Console.WriteLine("Hash: " + putFileRet.Hash);
            }
            else
            {
                Console.WriteLine("Failed to ResumablePut.PutFile");
            }
        }
Пример #16
0
        public void Constructor_ShouldIncludeDeviceIntegrityFlags()
        {
            var policy = new AuthPolicy(null, null, null, null, null, null);

            Assert.IsTrue(policy.Factors.Count == 0);

            var policyWithIntegrityFalse = new AuthPolicy(null, null, null, null, false, null);

            Assert.IsTrue(policyWithIntegrityFalse.Factors.Count == 1);
            Assert.IsTrue(policyWithIntegrityFalse.Factors[0].Factor == AuthPolicy.FactorType.DeviceIntegrity);
            Assert.IsTrue(policyWithIntegrityFalse.Factors[0].Attributes.FactorEnabled == 0);

            var policyWithIntegrityTrue = new AuthPolicy(null, null, null, null, true, null);

            Assert.IsTrue(policyWithIntegrityTrue.Factors.Count == 1);
            Assert.IsTrue(policyWithIntegrityTrue.Factors[0].Factor == AuthPolicy.FactorType.DeviceIntegrity);
            Assert.IsTrue(policyWithIntegrityTrue.Factors[0].Attributes.FactorEnabled == 1);
        }
Пример #17
0
        public void Constructor_ShouldPopulateFactorBasedOnDeviceIntegrity()
        {
            var authPolicy = new AuthPolicy(
                null,
                null,
                null,
                null,
                true,
                null
                );

            Assert.IsTrue(authPolicy.Factors != null);
            Assert.IsTrue(authPolicy.Factors.Count == 1);
            Assert.IsTrue(authPolicy.Factors[0].Factor == AuthPolicy.FactorType.DeviceIntegrity);
            Assert.IsTrue(authPolicy.Factors[0].Attributes.FactorEnabled == 1);
            Assert.IsTrue(authPolicy.Factors[0].Attributes.Locations == null);
            Assert.IsTrue(authPolicy.Factors[0].Requirement == AuthPolicy.FactorRequirementType.ForcedRequirement);
        }
Пример #18
0
        public void FromTransport_Variant1()
        {
            var authPolicy = new AuthPolicy(1, null, null, null, true, new List <AuthPolicy.Location>
            {
                new AuthPolicy.Location("n", 1, 2, 3),
                new AuthPolicy.Location("x", 2, 4, 6)
            },
                                            new List <AuthPolicy.TimeFence>
            {
                new AuthPolicy.TimeFence("y", new List <string> {
                    "Monday"
                }, 1, 2, 3, 4, "A")
            });

            var servicePolicy = ServicePolicy.FromTransport(authPolicy);

            Assert.IsTrue(servicePolicy.RequiredFactors == 1);
            Assert.IsTrue(servicePolicy.RequireInherenceFactor == null);
            Assert.IsTrue(servicePolicy.RequireKnowledgeFactor == null);
            Assert.IsTrue(servicePolicy.RequirePossessionFactor == null);

            Assert.IsTrue(servicePolicy.TimeFences.Count == 1);
            Assert.IsTrue(servicePolicy.TimeFences[0].Days.Count == 1);
            Assert.IsTrue(servicePolicy.TimeFences[0].Days[0] == DayOfWeek.Monday);
            Assert.IsTrue(servicePolicy.TimeFences[0].Name == "y");
            Assert.IsTrue(servicePolicy.TimeFences[0].TimeZone == "A");
            Assert.IsTrue(servicePolicy.TimeFences[0].StartHour == 1);
            Assert.IsTrue(servicePolicy.TimeFences[0].EndHour == 2);
            Assert.IsTrue(servicePolicy.TimeFences[0].StartMinute == 3);
            Assert.IsTrue(servicePolicy.TimeFences[0].EndMinute == 4);

            Assert.IsTrue(servicePolicy.Locations.Count == 2);
            Assert.IsTrue(servicePolicy.Locations[0].Name == "n");
            Assert.AreEqual(servicePolicy.Locations[0].Latitude, 2, 0.01);
            Assert.AreEqual(servicePolicy.Locations[0].Longitude, 3, 0.01);
            Assert.AreEqual(servicePolicy.Locations[0].Radius, 1, 0.01);

            Assert.IsTrue(servicePolicy.Locations[1].Name == "x");
            Assert.AreEqual(servicePolicy.Locations[1].Latitude, 4, 0.01);
            Assert.AreEqual(servicePolicy.Locations[1].Longitude, 6, 0.01);
            Assert.AreEqual(servicePolicy.Locations[1].Radius, 2, 0.01);
        }
Пример #19
0
        public void Serialization_MapsNoMinimumRequirementsWhenNoneAreSpecified()
        {
            var expected =
                "{" +
                "\"minimum_requirements\":[]," +
                "\"factors\":[" +
                "{" +
                "\"factor\":\"device integrity\"," +
                "\"requirement\":\"forced requirement\"," +
                "\"attributes\":{" +
                "\"factor enabled\":1" +
                "}" +
                "}" +
                "]" +
                "}";
            var policy = new AuthPolicy(null, null, null, null, true, null, null);
            var actual = new JsonNetJsonEncoder().EncodeObject(policy);

            Assert.AreEqual(expected, actual);
        }
Пример #20
0
        public void Serialization_ObjectParsesNoMinimumRequirementsWhenThereAreNone()
        {
            var json =
                "{" +
                "\"minimum_requirements\":[]," +
                "\"factors\":[" +
                "{" +
                "\"factor\":\"device integrity\"," +
                "\"attributes\":{" +
                "\"factor enabled\":\"1\"" +
                "}" +
                "}" +
                "]" +
                "}";

            var expected = new AuthPolicy(null, null, null, null, true, null);
            var actual   = new JsonNetJsonEncoder().DecodeObject <AuthPolicy>(json);

            actual.ShouldCompare(expected);
        }
Пример #21
0
        public void ShouldSerializeCorrectly_WithPolicy()
        {
            var encoder = new JsonNetJsonEncoder();
            var policy  = new AuthPolicy(2, null, null, null, null,
                                         new System.Collections.Generic.List <AuthPolicy.Location>
            {
                new AuthPolicy.Location
                {
                    Radius    = 60,
                    Latitude  = 27.175,
                    Longitude = 78.0422
                }
            }
                                         );
            var o        = new ServiceV3AuthsPostRequest("my-unique-user-identifier", policy, null, null, null, null, null, null);
            var json     = encoder.EncodeObject(o);
            var expected = "{\"username\":\"my-unique-user-identifier\",\"policy\":{\"minimum_requirements\":[{\"requirement\":\"authenticated\",\"any\":2}],\"factors\":[{\"factor\":\"geofence\",\"requirement\":\"forced requirement\",\"priority\":1,\"attributes\":{\"locations\":[{\"radius\":60.0,\"latitude\":27.175,\"longitude\":78.0422}]}}]}}";

            Assert.AreEqual(expected, json);
        }
Пример #22
0
        public static void RSClientPutFile()
        {
            Console.WriteLine("\n===> RSClient Generate UpToken");
            var    authPolicy = new AuthPolicy(bucketName, 3600);
            string upToken    = authPolicy.MakeAuthTokenString();

            Console.WriteLine("upToken: " + upToken);

            Console.WriteLine("\n===> RSClient.PutFileWithUpToken");
            PutFileRet putFileRet = RSClient.PutFileWithUpToken(upToken, bucketName, key, null, localFile, null, "key=<key>");

            PrintRet(putFileRet);
            if (putFileRet.OK)
            {
                Console.WriteLine("Hash: " + putFileRet.Hash);
            }
            else
            {
                Console.WriteLine("Failed to RSClient.PutFileWithUpToken");
            }
        }
Пример #23
0
        // Refresh the remote manifest.
        public Task RefreshManifest(bool setNewAsCurrent = false)
        {
            return(Task.Run(delegate()
            {
                if (this.AlwaysAssumeCurrent)
                {
                    if (File.Exists(AppPath + "\\catflap.json"))
                    {
                        LatestManifest = JsonConvert.DeserializeObject <Manifest>(System.IO.File.ReadAllText(AppPath + "\\catflap.json"));
                        CurrentManifest = LatestManifest;
                    }
                    else
                    {
                        throw new Exception("Cannot use AlwaysAssumeCurrent with no local manifest.");
                    }
                }
                else
                {
                    LatestManifest = AuthPolicy.Execute(() => GetManifestFromRemote());

                    if (setNewAsCurrent)
                    {
                        System.IO.File.WriteAllText(AppPath + "\\catflap.json", JsonConvert.SerializeObject(LatestManifest));
                        CurrentManifest = LatestManifest;
                    }
                    else
                    if (File.Exists(AppPath + "\\catflap.json"))
                    {
                        CurrentManifest = JsonConvert.DeserializeObject <Manifest>(System.IO.File.ReadAllText(AppPath + "\\catflap.json"));
                    }

                    Console.WriteLine(LatestManifest);

                    RefreshManifestResource("catflap.bgimg");
                    RefreshManifestResource("favicon.ico");
                }

                UpdateStatus();
            }));
        }
Пример #24
0
        public static int DoServiceAuthorizationWithPolicy(string username, string serviceId, string privateKey, bool jailbreakDetection, int?factors, string geofence, string apiURL)
        {
            List <Location> locations = null;

            // parse geofence input
            if (!string.IsNullOrWhiteSpace(geofence))
            {
                try
                {
                    var parts = geofence.Split(':');
                    if (parts.Length != 3)
                    {
                        Console.WriteLine("geofence should be in the format lat:lon:radius:name");
                        return(1);
                    }
                    var lat  = double.Parse(parts[0]);
                    var lon  = double.Parse(parts[1]);
                    var rad  = double.Parse(parts[2]);
                    var name = parts[3];

                    locations = new List <Location>();
                    locations.Add(new Location(rad, lat, lon, name));
                }
                catch (FormatException)
                {
                    Console.WriteLine("geofence parsing failed");
                    return(1);
                }
            }
            Console.WriteLine($"Using policy: factors: {factors}, locations: {locations?.Count}, geofence: {geofence}, jailbreak: {jailbreakDetection}");
            var policy = new AuthPolicy(
                jailbreakDetection: jailbreakDetection,
                locations: locations,
                requiredFactors: factors
                );

            var serviceClient = ClientFactories.MakeServiceClient(serviceId, privateKey, apiURL);

            return(SharedServiceHelpers.DoAuthorizationRequest(serviceClient, username, false, policy: policy));
        }
Пример #25
0
        public void Constructor_ShouldPopulateGeofences()
        {
            var policy = new AuthPolicy(null, null, null, null, null, new List <AuthPolicy.Location>
            {
                new AuthPolicy.Location
                {
                    Latitude  = 13.37,
                    Longitude = 44.44,
                    Radius    = 10
                }
            }
                                        );

            Assert.IsTrue(policy.Factors != null);
            Assert.IsTrue(policy.Factors.Count == 1);
            Assert.IsTrue(policy.Factors[0].Factor == AuthPolicy.FactorType.Geofence);
            Assert.IsTrue(policy.Factors[0].Priority == 1);
            Assert.IsTrue(policy.Factors[0].Requirement == AuthPolicy.FactorRequirementType.ForcedRequirement);
            Assert.IsTrue(policy.Factors[0].Attributes != null);
            Assert.IsTrue(policy.Factors[0].Attributes.Locations != null);
            Assert.IsTrue(Math.Abs(policy.Factors[0].Attributes.Locations[0].Latitude - 13.37) < 0.01);
            Assert.IsTrue(Math.Abs(policy.Factors[0].Attributes.Locations[0].Longitude - 44.44) < 0.01);
            Assert.IsTrue(Math.Abs(policy.Factors[0].Attributes.Locations[0].Radius - 10) < 0.01);
        }
 protected LoadBalancingUnifiedTestsBase(ConnectPolicy policy, AuthPolicy authPolicy = AuthPolicy.AuthOnNameServer) : base(policy)
 {
     this.UsePlugins = true;
     this.authPolicy = authPolicy;
 }
Пример #27
0
        public void Serialization_FullObject_SerializesAsExpected()
        {
            var expected =
                "{" +
                "\"minimum_requirements\":[{" +
                "\"requirement\":\"authenticated\"," +
                "\"any\":2," +
                "\"knowledge\":1," +
                "\"inherence\":1," +
                "\"possession\":1" +
                "}]," +
                "\"factors\":[" +
                "{" +
                "\"factor\":\"geofence\"," +
                "\"requirement\":\"forced requirement\"," +
                "\"priority\":1," +
                "\"attributes\":{" +
                "\"locations\":[" +
                "{\"radius\":1.1,\"latitude\":2.1,\"longitude\":3.1}," +
                "{\"radius\":1.2,\"latitude\":2.2,\"longitude\":3.2}" +
                "]" +
                "}" +
                "},{" +
                "\"factor\":\"device integrity\"," +
                "\"requirement\":\"forced requirement\"," +
                "\"attributes\":{" +
                "\"factor enabled\":1" +
                "}" +
                "},{" +
                "\"factor\":\"timefence\"," +
                "\"requirement\":\"forced requirement\"," +
                "\"priority\":1," +
                "\"attributes\":{" +
                "\"time fences\":[" +
                "{\"name\":\"tf1\",\"days\":[\"Monday\",\"Tuesday\",\"Wednesday\"],\"start hour\":0,\"end hour\":23,\"start minute\":0,\"end minute\":59,\"timezone\":\"America/Los_Angeles\"}," +
                "{\"name\":\"tf2\",\"days\":[\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\"start hour\":0,\"end hour\":23,\"start minute\":0,\"end minute\":59,\"timezone\":\"America/Los_Angeles\"}" +
                "]" +
                "}" +
                "}" +
                "]" +
                "}";


            var geoFences = new List <AuthPolicy.Location>
            {
                new AuthPolicy.Location {
                    Radius = 1.1, Latitude = 2.1, Longitude = 3.1
                },
                new AuthPolicy.Location {
                    Radius = 1.2, Latitude = 2.2, Longitude = 3.2
                }
            };
            var timeFences = new List <AuthPolicy.TimeFence>
            {
                new AuthPolicy.TimeFence("tf1", new List <string> {
                    "Monday", "Tuesday", "Wednesday"
                }, 0, 23, 0, 59, "America/Los_Angeles"),
                new AuthPolicy.TimeFence("tf2", new List <string> {
                    "Thursday", "Friday", "Saturday", "Sunday"
                }, 0, 23, 0, 59, "America/Los_Angeles")
            };

            var policy  = new AuthPolicy(2, true, true, true, true, geoFences, timeFences);
            var json    = new JsonNetJsonEncoder();
            var encoded = json.EncodeObject(policy);

            Assert.AreEqual(expected, encoded);
        }
Пример #28
0
        public void Serialization_ObjectParsesAsExpected()
        {
            var json =
                "{" +
                "\"minimum_requirements\":[{" +
                "\"requirement\":\"authenticated\"," +
                "\"any\":2," +
                "\"knowledge\":1," +
                "\"inherence\":1," +
                "\"possession\":1" +
                "}]," +
                "\"factors\":[" +
                "{" +
                "\"factor\":\"geofence\"," +
                "\"requirement\":\"forced requirement\"," +
                "\"priority\":1," +
                "\"attributes\":{" +
                "\"locations\":[" +
                "{\"radius\":1.1,\"latitude\":2.1,\"longitude\":3.1}," +
                "{\"radius\":1.2,\"latitude\":2.2,\"longitude\":3.2}" +
                "]" +
                "}" +
                "},{" +
                "\"factor\":\"device integrity\"," +
                "\"attributes\":{" +
                "\"factor enabled\":\"1\"" +
                "}" +
                "},{" +
                "\"factor\":\"timefence\"," +
                "\"requirement\":\"forced requirement\"," +
                "\"priority\":1," +
                "\"attributes\":{" +
                "\"time fences\":[" +
                "{\"name\":\"tf1\",\"days\":[\"Monday\",\"Tuesday\",\"Wednesday\"],\"start hour\":0,\"end hour\":23,\"start minute\":0,\"end minute\":59,\"timezone\":\"America/Los_Angeles\"}," +
                "{\"name\":\"tf2\",\"days\":[\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\"start hour\":0,\"end hour\":23,\"start minute\":0,\"end minute\":59,\"timezone\":\"America/Los_Angeles\"}" +
                "]" +
                "}" +
                "}" +
                "]}";

            var geoFences = new List <AuthPolicy.Location>
            {
                new AuthPolicy.Location(null, 1.1, 2.1, 3.1),
                new AuthPolicy.Location(null, 1.2, 2.2, 3.2)
            };

            var timeFences = new List <AuthPolicy.TimeFence>
            {
                new AuthPolicy.TimeFence("tf1", new List <string> {
                    "Monday", "Tuesday", "Wednesday"
                }, 0, 23, 0, 59, "America/Los_Angeles"),
                new AuthPolicy.TimeFence("tf2", new List <string> {
                    "Thursday", "Friday", "Saturday", "Sunday"
                }, 0, 23, 0, 59, "America/Los_Angeles")
            };

            var expected = new AuthPolicy(2, true, true, true, true, geoFences, timeFences);
            var actual   = new JsonNetJsonEncoder().DecodeObject <AuthPolicy>(json);

            actual.ShouldCompare(expected);
        }
Пример #29
0
        public void Constructor_ShouldNotAddGeofenceFactorIfNullLocations()
        {
            var policy = new AuthPolicy(null, null, null, null, null, null);

            Assert.IsTrue(policy.Factors.Count == 0);
        }
Пример #30
0
        public void Constructor_ShouldNotAddGeofenceFactorIfEmptyLocations()
        {
            var policy = new AuthPolicy(null, null, null, null, null, new List <AuthPolicy.Location>());

            Assert.IsTrue(policy.Factors.Count == 0);
        }