예제 #1
0
파일: Program.cs 프로젝트: Lavan/DdpNet
        static async Task Run()
        {
            var meteorClient = new MeteorClient(new ConsoleLoggingConnection(new WebSocketConnection(new Uri("ws://localhost:3000/websocket"))));
            await meteorClient.ConnectAsync();

            var entryCollection = meteorClient.GetCollection<Entry>("entries");
            await meteorClient.Subscribe("entries");

            var inserts = 100;
            var currentCount = entryCollection.Count;
            List<Task> tasks = new List<Task>();
            for (int i = 0; i < inserts; i++)
            {
                var entry = new Entry()
                {
                    Count = i,
                    IsActive = true,
                    Name = "Item " + i.ToString()
                };

                tasks.Add(entryCollection.AddAsync(entry));
            }

            Task.WaitAll(tasks.ToArray());

            var newCount = entryCollection.Count;
        }
예제 #2
0
        public void MeteorClient_LoginPassword_NullPassword()
        {
            var websocket = new InMemoryConnection();

            var client = new MeteorClient(websocket);
            websocket.Reply(JsonConvert.SerializeObject(new Connected() { Session = "TestSession" }));
            client.ConnectAsync().Wait();

            PCLTesting.ExceptionAssert.Throws<ArgumentNullException>(() => client.LoginPassword("Username", String.Empty));
        }
예제 #3
0
        public void MeteorClient_LoginPassword_CallsServerMethod()
        {
            var websocket = new InMemoryConnection();

            var client = new MeteorClient(websocket);

            websocket.Reply(JsonConvert.SerializeObject(new Connected() { Session = "TestSession"}));
            client.ConnectAsync().Wait();

            var loginTask = client.LoginPassword("Username", "Password");

            Method method = null;

            while (method == null)
            {
                var message = websocket.GetSentMessage();
                var jobject =  JObject.Parse(message);
                if (jobject["msg"] != null && jobject["msg"].Value<string>() == "method")
                {
                    method = JsonConvert.DeserializeObject<Method>(message);
                }
            }

            websocket.Reply(JsonConvert.SerializeObject(new Result() { Id = method.Id }));
            websocket.Reply(JsonConvert.SerializeObject(new Updated() { Methods = new []{method.Id}}));

            loginTask.Wait();

            Assert.AreEqual("login", method.MethodName);
            Assert.AreEqual(1, method.Parameters.Length);
            var loginParameters = JsonConvert.DeserializeObject<LoginPasswordParameters>(method.Parameters[0].ToString());

            Assert.AreEqual("Username", loginParameters.User.UserName);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(loginParameters.Password.Digest));
            Assert.AreEqual("sha-256", loginParameters.Password.Algorithm);
        }
예제 #4
0
 public static async Task AddDenyAllEntry(MeteorClient client, Entry entry)
 {
     await client.Call("addDenyAll", entry);
 }