Exemple #1
0
        public void CreateGroup()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var message = new NGroupCreateMessage.Builder(random.GetString())
                          .Description(GroupDescription)
                          .Lang("en")
                          .Private(PrivateGroup)
                          .Build();

            client.Send(message, (INResultSet <INGroup> result) =>
            {
                myGroup = result.Results[0];
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(myGroup);
            Assert.AreEqual(GroupDescription, myGroup.Description);
            Assert.AreEqual(PrivateGroup, myGroup.Private);
        }
Exemple #2
0
        public void GetFriendId()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var client2 = new NClient.Builder(DefaultServerKey).Build();
            var message = NAuthenticateMessage.Device(DeviceId);

            client2.Register(message, (INSession friendSession) =>
            {
                client2.Connect(friendSession);
                var selfMessage = NSelfFetchMessage.Default();
                client2.Send(selfMessage, (INSelf result) =>
                {
                    UserId = result.Id;
                    client2.Logout();
                }, (INError err) => {
                    error = err;
                });
            }, (INError err) => {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
Exemple #3
0
        public void GroupsSelfList()
        {
            ManualResetEvent          evt    = new ManualResetEvent(false);
            INError                   error  = null;
            INResultSet <INGroupSelf> groups = null;

            var message = NGroupsSelfListMessage.Default();

            client.Send(message, (INResultSet <INGroupSelf> results) =>
            {
                groups = results;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
            Assert.NotNull(groups);
            Assert.NotNull(groups.Results);
            Assert.AreEqual(1, groups.Results.Count);
            Assert.NotNull(groups.Results[0]);
            Assert.AreEqual(groups.Results[0].Id, myGroup.Id);
            Assert.AreNotEqual(groups.Results[0].State, 2);
            // Defined earlier on in GroupUpdate test
            Assert.AreEqual(groups.Results[0].AvatarUrl, GroupDescription);
        }
Exemple #4
0
        public void LeaveTopic()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var message = new NTopicJoinMessage.Builder().TopicRoom(Encoding.UTF8.GetBytes("test-room")).Build();

            client1.Send(message, (INTopic topic) =>
            {
                client1.Send(NTopicLeaveMessage.Default(topic.Topic), (bool complete) =>
                {
                    evt.Set();
                }, (INError err) => {
                    error = err;
                    evt.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
        public void LoginEmail_Invalid([ValueSource("BlankCases")] string email,
                                       [ValueSource("BlankCases")] string password)
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INError          result = null;

            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Email(email, password);

            client.Login(message, (INSession session) =>
            {
                evt.Set();
            }, (INError error) =>
            {
                result = error;
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            if (email == string.Empty)
            {
                Assert.AreEqual("Email address is required", result.Message);
            }
            else
            {
                Assert.AreEqual("Invalid email address, no spaces or control characters allowed", result.Message);
            }
        }
Exemple #6
0
        public void LeaveTopic()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var message = new NTopicJoinMessage.Builder().TopicRoom("test-room").Build();

            client1.Send(message, (INResultSet <INTopic> topics) =>
            {
                var topic = topics.Results[0];
                client1.Send(NTopicLeaveMessage.Default(topic.Topic), (bool complete) =>
                {
                    evt.Set();
                }, (INError err) => {
                    error = err;
                    evt.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
Exemple #7
0
        public void SetUp()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            client = new NClient.Builder(DefaultServerKey).Build();
            var message = NAuthenticateMessage.Device(DeviceId);

            client.Login(message, (INSession session) =>
            {
                userId = session.Id;
                client.Connect(session);
                evt.Set();
            }, (INError err) => {
                client.Register(message, (INSession session) =>
                {
                    userId = session.Id;
                    client.Connect(session);
                    evt.Set();
                }, (INError err2) => {
                    error = err2;
                    evt.Set();
                });
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
        }
Exemple #8
0
        public void WriteStorageIfNoneMatchRejected()
        {
            ManualResetEvent           evt = new ManualResetEvent(false);
            INResultSet <INStorageKey> res = null;
            INError error = null;

            var message = new NStorageWriteMessage.Builder()
                          .Write(Bucket, Collection, Record, StorageValue, IfNoneMatchVersion)
                          .Build();

            client.Send(message, (INResultSet <INStorageKey> results) =>
            {
                res = results;
                evt.Set();
            }, (INError e) => {
                error = e;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(res);
            Assert.IsNotNull(error);
            Assert.AreEqual(ErrorCode.StorageRejected, error.Code);
            Assert.AreEqual("Storage write rejected: not found, version check failed, or permission denied", error.Message);
        }
Exemple #9
0
        public void CreateGroup()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var message = new NGroupCreateMessage.Builder(GroupName)
                          .Description(GroupDescription)
                          .Lang("en")
                          .Private(PrivateGroup)
                          .Build();

            client.Send(message, (INGroup group) =>
            {
                myGroup = group;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(myGroup);
            Assert.AreEqual(GroupName, myGroup.Name);
            Assert.AreEqual(GroupDescription, myGroup.Description);
            Assert.AreEqual(PrivateGroup, myGroup.Private);
        }
Exemple #10
0
        public void ListFriends()
        {
            ManualResetEvent       evt     = new ManualResetEvent(false);
            INResultSet <INFriend> friends = null;
            INError error = null;

            var message = NFriendsListMessage.Default();

            client.Send(message, (INResultSet <INFriend> results) =>
            {
                friends = results;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(2000, false);
            Assert.IsNull(error);
            Assert.NotNull(friends);
            Assert.NotNull(friends.Results);
            Assert.IsTrue(friends.Results.Count == 1);
            Assert.NotNull(friends.Results[0]);
            Assert.IsTrue(friends.Results[0].Handle == FriendHandle);
        }
Exemple #11
0
        public void LeaderboardRecordsFetch()
        {
            ManualResetEvent evt = new ManualResetEvent(false);
            INResultSet <INLeaderboardRecord> res = null;
            INError error = null;

            var message = new NLeaderboardRecordsFetchMessage.Builder(serverLeaderboardId).Build();

            client.Send(message, (INResultSet <INLeaderboardRecord> results) =>
            {
                res = results;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNotNull(res);
            Assert.IsNotEmpty(res.Results);
            Assert.GreaterOrEqual(res.Results.Count, 1);
            Assert.IsNotEmpty(res.Results[0].Handle);
            Assert.AreEqual(res.Results[0].Location, "San Francisco");
            Assert.Greater(res.Results[0].NumScore, 0);
        }
Exemple #12
0
        public void FetchStorage()
        {
            ManualResetEvent            evt         = new ManualResetEvent(false);
            INResultSet <INStorageData> storageData = null;
            INError error = null;

            var message = new NStorageFetchMessage.Builder()
                          .Fetch(Bucket, Collection, Record, UserId)
                          .Build();

            client.Send(message, (INResultSet <INStorageData> results) =>
            {
                storageData = results;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(2000, false);
            Assert.IsNull(error);
            Assert.NotNull(storageData);
            Assert.NotNull(storageData.Results);
            Assert.AreEqual(storageData.Results.Count, 1);
            Assert.NotNull(storageData.Results[0]);
            Assert.AreEqual(storageData.Results[0].Bucket, Bucket);
            Assert.AreEqual(storageData.Results[0].Collection, Collection);
            Assert.AreEqual(storageData.Results[0].Record, Record);
            Assert.AreEqual(storageData.Results[0].Value, StorageValue);
        }
Exemple #13
0
        public void ListNotifications()
        {
            ManualResetEvent             evt = new ManualResetEvent(false);
            INResultSet <INNotification> res = null;
            INError error = null;

            var message = NNotificationsListMessage.Default(10);

            client.Send(message, (INResultSet <INNotification> results) =>
            {
                res = results;
                evt.Set();
            }, (INError e) => {
                error = e;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(res);
            Assert.IsTrue(res.Results.Count > 0);
            Assert.IsNotNull(res.Cursor);

            notifications = res.Results;
        }
        public void LoginGoogle_Invalid([ValueSource("BlankCases")] string oauthToken)
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INError          result = null;

            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Google(oauthToken);

            client.Login(message, (INSession session) =>
            {
                evt.Set();
            }, (INError error) =>
            {
                result = error;
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            if (oauthToken == string.Empty)
            {
                Assert.AreEqual("Access token is required", result.Message);
            }
            else
            {
                Assert.AreEqual("Invalid Google access token, no spaces or control characters allowed", result.Message);
            }
        }
        public void RegisterCustom_Invalid([ValueSource("BlankCases")] string id)
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INError          result = null;

            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Custom(id);

            client.Register(message, (INSession session) =>
            {
                evt.Set();
            }, (INError error) =>
            {
                result = error;
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            if (id == string.Empty)
            {
                Assert.AreEqual("Custom ID is required", result.Message);
            }
            else
            {
                Assert.AreEqual("Invalid custom ID, no spaces or control characters allowed", result.Message);
            }
        }
Exemple #16
0
        public void GroupsFetch()
        {
            ManualResetEvent      evt    = new ManualResetEvent(false);
            INError               error  = null;
            INResultSet <INGroup> groups = null;

            var message = NGroupsFetchMessage.Builder.ById(FriendGroup.Id).Build();

            client.Send(message, (INResultSet <INGroup> results) =>
            {
                groups = results;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
            Assert.NotNull(groups);
            Assert.NotNull(groups.Results);
            Assert.AreEqual(1, groups.Results.Count);
            // Ensure only one group exists with the "fa" language.
            Assert.AreEqual(groups.Results[0].Lang, "fa");
        }
Exemple #17
0
        public void GroupsList()
        {
            ManualResetEvent      evt    = new ManualResetEvent(false);
            INError               error  = null;
            INResultSet <INGroup> groups = null;

            var message = new NGroupsListMessage.Builder()
                          .OrderByAsc(true)
                          .FilterByLang("en")
                          .Build();

            client.Send(message, (INResultSet <INGroup> results) =>
            {
                groups = results;
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.NotNull(groups);
            Assert.NotNull(groups.Results);
            Assert.Greater(groups.Results.Count, 1);
        }
        public void RegisterEmail_InvalidEmail()
        {
            string  email    = random.GetString();
            string  password = random.GetString();
            INError error    = RegisterEmailError(email, password);

            Assert.NotNull(error);
            Assert.AreEqual("Invalid email address format", error.Message);
        }
        public void RegisterEmail_InvalidPassword()
        {
            string  email    = TestContext.CurrentContext.Random.GetString();
            string  password = TestContext.CurrentContext.Random.GetString(6);
            INError error    = RegisterEmailError(email, password);

            Assert.NotNull(error);
            Assert.AreEqual("Password must be longer than 8 characters", error.Message);
        }
 void OnLoginError(INError error)
 {
     if (error.Code == ErrorCode.UserNotFound)
     {
         // if the user logs in for the first time
         RegisterWithDeviceId();
     }
     else
     {
         OnError(error);
     }
 }
Exemple #21
0
        public void SendDataMatch()
        {
            INError error = null;
            INMatch m     = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);

            client1.Send(NMatchCreateMessage.Default(), (INMatch match) =>
            {
                m = match;
                client2.Send(NMatchJoinMessage.Default(match.Id), (INResultSet <INMatch> match2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(m);

            byte[]           data   = Encoding.ASCII.GetBytes("test-data");
            long             opCode = 9;
            INMatchData      d      = null;
            ManualResetEvent evt2   = new ManualResetEvent(false);

            client2.OnMatchData = (INMatchData matchData) =>
            {
                d = matchData;
                evt2.Set();
            };
            client1.Send(NMatchDataSendMessage.Default(m.Id, opCode, data), false, (bool completed) =>
            {
                // No action.
            }, (INError err) => {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(d);
            Assert.AreEqual(d.Id, m.Id);
            Assert.AreEqual(d.OpCode, opCode);
            Assert.AreEqual(d.Data, data);
        }
Exemple #22
0
        public void PresenceUpdateLeaveTopic()
        {
            INError error = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);

            byte[]  room  = Encoding.UTF8.GetBytes("test-room");
            INTopic topic = null;

            client1.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INTopic topic1) =>
            {
                topic = topic1;
                client2.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INTopic topic2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(topic);

            byte[]           leaveUserId = null;
            ManualResetEvent evt2        = new ManualResetEvent(false);

            client1.OnTopicPresence += (object source, NTopicPresenceEventArgs args) =>
            {
                leaveUserId = args.TopicPresence.Leave[0].UserId;
                evt2.Set();
            };
            client2.Send(NTopicLeaveMessage.Default(topic.Topic), (bool complete) =>
            {
                // No action.
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
            });

            evt2.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.AreEqual(userId2, leaveUserId);
        }
Exemple #23
0
        public void PresenceUpdateLeaveTopic()
        {
            INError error = null;

            ManualResetEvent evt1  = new ManualResetEvent(false);
            string           room  = "test-room";
            INTopic          topic = null;

            client1.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INResultSet <INTopic> topics1) =>
            {
                topic = topics1.Results[0];
                client2.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INResultSet <INTopic> topics2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(topic);

            string           leaveUserId = null;
            ManualResetEvent evt2        = new ManualResetEvent(false);

            client1.OnTopicPresence = (INTopicPresence presence) =>
            {
                leaveUserId = presence.Leave[0].UserId;
                evt2.Set();
            };
            client2.Send(NTopicLeaveMessage.Default(topic.Topic), (bool complete) =>
            {
                // No action.
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
            });

            evt2.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.AreEqual(userId2, leaveUserId);
        }
        public void RegisterEmail_Invalid([ValueSource("BlankCases")] string email,
                                          [ValueSource("BlankCases")] string password)
        {
            INError error = RegisterEmailError(email, password);

            Assert.NotNull(error);
            if (email == string.Empty)
            {
                Assert.AreEqual("Email address is required", error.Message);
            }
            else
            {
                Assert.AreEqual("Invalid email address, no spaces or control characters allowed", error.Message);
            }
        }
Exemple #25
0
        public void CheckTestLeaderboardExists()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var client2 = new NClient.Builder(DefaultServerKey).Build();
            var message = NAuthenticateMessage.Device(DeviceId);

            client2.Register(message, (INSession ses) =>
            {
                client2.Connect(ses);

                var selfMessage = NSelfFetchMessage.Default();
                client2.Send(selfMessage, (INSelf self) =>
                {
                    this.self = self;
                    var leaderboardListMessage = new NLeaderboardsListMessage.Builder().Build();
                    client2.Send(leaderboardListMessage, (INResultSet <INLeaderboard> results) =>
                    {
                        bool found = false;
                        foreach (var leaderboard in results.Results)
                        {
                            if (LeaderboardId.Equals(leaderboard.Id))
                            {
                                serverLeaderboardId = leaderboard.Id;
                                found = true;
                                break;
                            }
                        }
                        client2.Logout();
                        Assert.IsTrue(found, "Leaderboard not found. Setup the leaderboard ('{0}') in Nakama and run this test again.", LeaderboardIdName);
                        evt.Set();
                    }, (INError err) => {
                        error = err;
                        evt.Set();
                    });
                }, (INError err) => {
                    error = err;
                    evt.Set();
                });
            }, (INError err) => {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
Exemple #26
0
        public void GetFriendId()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var client2 = new NClient.Builder(DefaultServerKey).Build();

            client2.OnDisconnect = (INDisconnectEvent _) =>
            {
                var message = NAuthenticateMessage.Device(DeviceId);
                client2.Register(message, (INSession session) =>
                {
                    MyUserId = ((NSession)session).Id;
                    evt.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt.Set();
                });
            };

            var friendAuthMessage = NAuthenticateMessage.Device(random.GetString());

            client2.Register(friendAuthMessage, (INSession friendSession) =>
            {
                FriendUserId = ((NSession)friendSession).Id;
                client2.Connect(friendSession);

                var message = new NGroupCreateMessage.Builder(GroupName)
                              .Description(GroupDescription)
                              .Lang("fa")
                              .Private(PrivateGroup)
                              .Build();
                client2.Send(message, (INResultSet <INGroup> result) =>
                {
                    FriendGroup = result.Results[0];
                    client2.Logout();
                }, (INError err) => {
                    error = err;
                });
            }, (INError err) => {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
Exemple #27
0
        public void PresenceUpdateLeaveMatch()
        {
            INError error = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);
            INMatch          m    = null;

            client1.Send(NMatchCreateMessage.Default(), (INMatch match) =>
            {
                m = match;
                client2.Send(NMatchJoinMessage.Default(m.Id), (INResultSet <INMatch> match2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(m);

            ManualResetEvent evt2       = new ManualResetEvent(false);
            string           leftUserId = null;

            client1.OnMatchPresence = (INMatchPresence presence) =>
            {
                leftUserId = presence.Leave[0].UserId;
                evt2.Set();
            };
            client2.Send(NMatchLeaveMessage.Default(m.Id), (bool complete) =>
            {
                // No action.
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.AreEqual(userId2, leftUserId);
        }
Exemple #28
0
        public void CreateMatch()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            client1.Send(NMatchCreateMessage.Default(), (INMatch match) =>
            {
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
Exemple #29
0
        public void GroupLeave()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var message = NGroupLeaveMessage.Default(FriendGroup.Id);

            client.Send(message, (bool completed) => {
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
        }
Exemple #30
0
        public void JoinTopic()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            var message = new NTopicJoinMessage.Builder().TopicRoom("test-room").Build();

            client1.Send(message, (INResultSet <INTopic> topics) =>
            {
                evt.Set();
            }, (INError err) =>
            {
                error = err;
                evt.Set();
            });

            evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }