Exemplo n.º 1
0
        public static object EncodeACL(ParseACL acl)
        {
            HashSet <string> keys = new HashSet <string>();

            if (acl.readAccess.Count > 0)
            {
                keys.UnionWith(acl.readAccess.Keys);
            }
            if (acl.writeAccess.Count > 0)
            {
                keys.UnionWith(acl.writeAccess.Keys);
            }
            Dictionary <string, object> result = new Dictionary <string, object>();

            foreach (string key in keys)
            {
                Dictionary <string, bool> access = new Dictionary <string, bool>();
                if (acl.readAccess.TryGetValue(key, out bool ra))
                {
                    access["read"] = ra;
                }
                if (acl.writeAccess.TryGetValue(key, out bool wa))
                {
                    access["write"] = wa;
                }
                result[key] = access;
            }
            return(result);
        }
Exemplo n.º 2
0
        public void TestIndexGetterSetter()
        {
            ParseObject obj = ParseObject.Create("Corgi");

            obj["gogo"]    = true;
            obj["list"]    = new List <string>();
            obj["dict"]    = new Dictionary <string, object>();
            obj["fakeACL"] = new ParseACL();
            obj["obj"]     = new ParseObject("Corgi");

            Assert.True(obj.ContainsKey("gogo"));
            Assert.IsInstanceOf <bool>(obj["gogo"]);

            Assert.True(obj.ContainsKey("list"));
            Assert.IsInstanceOf <IList <string> >(obj["list"]);

            Assert.True(obj.ContainsKey("dict"));
            Assert.IsInstanceOf <IDictionary <string, object> >(obj["dict"]);

            Assert.True(obj.ContainsKey("fakeACL"));
            Assert.IsInstanceOf <ParseACL>(obj["fakeACL"]);

            Assert.True(obj.ContainsKey("obj"));
            Assert.IsInstanceOf <ParseObject>(obj["obj"]);

            Assert.Throws <KeyNotFoundException>(() => { var gogo = obj["missingItem"]; });
        }
Exemplo n.º 3
0
        public void TestIndexGetterSetter()
        {
            ParseObject obj = Client.CreateObject("Corgi");

            obj["gogo"]      = true;
            obj["list"]      = new List <string>();
            obj["dict"]      = new Dictionary <string, object>();
            obj["fakeACL"]   = new ParseACL();
            obj[nameof(obj)] = new ParseObject("Corgi");

            Assert.IsTrue(obj.ContainsKey("gogo"));
            Assert.IsInstanceOfType(obj["gogo"], typeof(bool));

            Assert.IsTrue(obj.ContainsKey("list"));
            Assert.IsInstanceOfType(obj["list"], typeof(IList <string>));

            Assert.IsTrue(obj.ContainsKey("dict"));
            Assert.IsInstanceOfType(obj["dict"], typeof(IDictionary <string, object>));

            Assert.IsTrue(obj.ContainsKey("fakeACL"));
            Assert.IsInstanceOfType(obj["fakeACL"], typeof(ParseACL));

            Assert.IsTrue(obj.ContainsKey(nameof(obj)));
            Assert.IsInstanceOfType(obj[nameof(obj)], typeof(ParseObject));

            Assert.ThrowsException <KeyNotFoundException>(() => { object gogo = obj["missingItem"]; });
        }
Exemplo n.º 4
0
        public async Task UserReadAndWrite()
        {
            await ParseUser.Login("hello", "world");

            ParseObject account     = new ParseObject("Account");
            ParseUser   currentUser = await ParseUser.GetCurrent();

            ParseACL acl = ParseACL.CreateWithOwner(currentUser);

            account.ACL        = acl;
            account["balance"] = 512;
            await account.Save();

            Assert.IsTrue(acl.GetUserReadAccess(currentUser));
            Assert.IsTrue(acl.GetUserWriteAccess(currentUser));

            ParseQuery <ParseObject> query = new ParseQuery <ParseObject>("Account");
            ParseObject result             = await query.Get(account.ObjectId);

            TestContext.WriteLine(result.ObjectId);
            Assert.NotNull(result.ObjectId);

            await ParseUser.Logout();

            result = await query.Get(account.ObjectId);

            Assert.IsNull(result);
        }
        public void TestACLCoding()
        {
            MutableObjectState state = (MutableObjectState)ParseObjectCoder.Instance.Decode(new Dictionary <string, object>
            {
                ["ACL"] = new Dictionary <string, object>
                {
                    ["3KmCvT7Zsb"] = new Dictionary <string, object>
                    {
                        ["read"]  = true,
                        ["write"] = true
                    },
                    ["*"] = new Dictionary <string, object> {
                        ["read"] = true
                    }
                }
            }, null);

            ParseACL resultACL = null;

            Assert.IsTrue(state.ContainsKey("ACL"));
            Assert.IsTrue((resultACL = state.ServerData["ACL"] as ParseACL) is ParseACL);
            Assert.IsTrue(resultACL.PublicReadAccess);
            Assert.IsFalse(resultACL.PublicWriteAccess);
            Assert.IsTrue(resultACL.GetWriteAccess("3KmCvT7Zsb"));
            Assert.IsTrue(resultACL.GetReadAccess("3KmCvT7Zsb"));
            Assert.IsFalse(resultACL.GetWriteAccess("*"));
            Assert.IsTrue(resultACL.GetReadAccess("*"));
        }
        public void TestEncodeACL()
        {
            ParseACL acl1 = new ParseACL();

            IDictionary <string, object> value1 = ParseEncoderTestClass.Instance.Encode(acl1, Client) as IDictionary <string, object>;

            Assert.IsNotNull(value1);
            Assert.AreEqual(0, value1.Keys.Count);

            ParseACL acl2 = new ParseACL
            {
                PublicReadAccess  = true,
                PublicWriteAccess = true
            };

            IDictionary <string, object> value2 = ParseEncoderTestClass.Instance.Encode(acl2, Client) as IDictionary <string, object>;

            Assert.AreEqual(1, value2.Keys.Count);
            IDictionary <string, object> publicAccess = value2["*"] as IDictionary <string, object>;

            Assert.AreEqual(2, publicAccess.Keys.Count);
            Assert.IsTrue((bool)publicAccess["read"]);
            Assert.IsTrue((bool)publicAccess["write"]);

            // TODO (hallucinogen): mock ParseUser and test SetReadAccess and SetWriteAccess
        }
Exemplo n.º 7
0
        public void Initialize()
        {
            ACL     = new ParseACL();
            Readers = new ParseRole(ObjectId + "_Readers", ACL);
            Writers = new ParseRole(ObjectId + "_Writers", ACL);

            ACL.SetRoleReadAccess(Readers, true);
            ACL.SetRoleReadAccess(Writers, true);
            ACL.SetRoleWriteAccess(Writers, true);
        }
Exemplo n.º 8
0
        public void TestCheckPermissionsWithParseUserConstructor()
        {
            ParseUser owner = GenerateUser("OwnerUser");
            ParseUser user  = GenerateUser("OtherUser");
            ParseACL  acl   = new ParseACL(owner);

            Assert.IsTrue(acl.GetReadAccess(owner.ObjectId));
            Assert.IsTrue(acl.GetWriteAccess(owner.ObjectId));
            Assert.IsTrue(acl.GetReadAccess(owner));
            Assert.IsTrue(acl.GetWriteAccess(owner));
        }
Exemplo n.º 9
0
        public async Task PrivateReadAndWrite()
        {
            ParseObject account = new ParseObject("Account");
            ParseACL    acl     = new ParseACL();

            acl.PublicReadAccess  = false;
            acl.PublicWriteAccess = false;
            account.ACL           = acl;
            account["balance"]    = 1024;
            await account.Save();

            Assert.IsFalse(acl.PublicReadAccess);
            Assert.IsFalse(acl.PublicWriteAccess);
        }
Exemplo n.º 10
0
        public async Task RoleReadAndWrite()
        {
            ParseQuery <ParseRole> query = ParseRole.GetQuery();
            ParseRole owner = await query.Get("5e1440cbfc36ed006add1b8d");

            ParseObject account = new ParseObject("Account");
            ParseACL    acl     = new ParseACL();

            acl.SetRoleReadAccess(owner, true);
            acl.SetRoleWriteAccess(owner, true);
            account.ACL = acl;
            await account.Save();

            Assert.IsTrue(acl.GetRoleReadAccess(owner));
            Assert.IsTrue(acl.GetRoleWriteAccess(owner));
        }
Exemplo n.º 11
0
        public void TestReadWriteMutationWithParseUserConstructor()
        {
            ParseUser owner     = GenerateUser("OwnerUser");
            ParseUser otherUser = GenerateUser("OtherUser");
            ParseACL  acl       = new ParseACL(owner);

            acl.SetReadAccess(otherUser, true);
            acl.SetWriteAccess(otherUser, true);
            acl.SetReadAccess(owner.ObjectId, false);
            acl.SetWriteAccess(owner.ObjectId, false);
            Assert.IsTrue(acl.GetReadAccess(otherUser.ObjectId));
            Assert.IsTrue(acl.GetWriteAccess(otherUser.ObjectId));
            Assert.IsTrue(acl.GetReadAccess(otherUser));
            Assert.IsTrue(acl.GetWriteAccess(otherUser));
            Assert.IsFalse(acl.GetReadAccess(owner));
            Assert.IsFalse(acl.GetWriteAccess(owner));
        }
        public static ParseACL DecodeACL(Dictionary <string, object> dict)
        {
            ParseACL acl = new ParseACL();

            foreach (KeyValuePair <string, object> kv in dict)
            {
                string key = kv.Key;
                Dictionary <string, object> access = kv.Value as Dictionary <string, object>;
                if (access.TryGetValue("read", out object ra))
                {
                    acl.readAccess[key] = Convert.ToBoolean(ra);
                }
                if (access.TryGetValue("write", out object wa))
                {
                    acl.writeAccess[key] = Convert.ToBoolean(wa);
                }
            }
            return(acl);
        }
Exemplo n.º 13
0
    IEnumerator CreateTeamCoroutine(string name)
    {
        LoadAlert.Instance.StartLoad("Creating " + name + "...", null, -1);

        ParseACL acl = new ParseACL(ParseUser.CurrentUser);

        ParseRole role = new ParseRole(name, acl);

        role.Users.Add(ParseUser.CurrentUser);

        User.CurrentUser.CompanyName = name;

        Task task = role.SaveAsync();

        while (!task.IsCompleted)
        {
            yield return(null);
        }

        if (task.IsFaulted || task.Exception != null)
        {
            Debug.Log("error:\n" + task.Exception.ToString());
        }
        else
        {
            task = ParseUser.CurrentUser.SaveAsync();

            while (!task.IsCompleted)
            {
                yield return(null);
            }

            if (task.IsFaulted || task.Exception != null)
            {
                Debug.Log("error:\n" + task.Exception.ToString());
            }
            else
            {
                TeamUpdated(role);
            }
        }
    }
Exemplo n.º 14
0
        public static bool Initialize()
        {
            try {
                var credentials = Accredit.GetCredentials("benchmarker");

                // Xamarin Performance
                InitializeParseForXamarinPerformance();

                var user = AsyncContext.Run(() => ParseInterface.RunWithRetry(() => ParseUser.LogInAsync(credentials ["username"].ToString(), credentials ["password"].ToString())));
                //Console.WriteLine ("LogInAsync");

                //Console.WriteLine ("User authenticated: " + user.IsAuthenticated);

                var acl = new ParseACL(user);
                acl.PublicReadAccess  = true;
                acl.PublicWriteAccess = false;

                defaultACL = acl;
            } catch (Exception e) {
                Console.Error.WriteLine("Error: Exception when initializing Parse API: {0}", e);
                return(false);
            }
            return(true);
        }