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); }
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); }
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); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }
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"); }
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); } }
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); }
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); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }