Example #1
0
 public void ConstructorTest()
 {
     using (var manager = new CavetubeAuthManager("someone", "password"))
     {
         var auth = manager.GetType().GetField("_auth",
                                               BindingFlags.GetField | BindingFlags.SetField
                                               | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(manager);
         Assert.AreEqual(typeof(CavetubeAuthWrapper), auth.GetType());
     }
 }
Example #2
0
        public void GetApiKeyTest()
        {
            var factory = new MockCavetubeAuthFactory();
            var mock    = factory.MockCavetubeAuth;

            mock.Setup(a => a.Login(It.IsAny <string>(), It.IsAny <string>())).Returns("apikey");
            ICavetubeAuth auth = mock.Object;

            using (CavetubeAuthManager manager = new CavetubeAuthManager("hakusai", "password", factory))
            {
                Assert.AreEqual("apikey", manager.GetApiKey());
            }

            mock.Verify(a => a.Logout("hakusai", "password"), Times.Once());
        }
Example #3
0
        /// <summary>
        /// Cavetube用Main(テスト用に差し替え可能な形)
        /// </summary>
        /// <param name="authFactory">使用するICavetubeAuthのインスタンスを選択</param>
        /// <param name="clientFactory">使用するICavetubeCelientのインスタンスを選択</param>
        /// <param name="pso2Factory">使用するIPso2LogWatcherのインスタンスを選択</param>
        /// <param name="waitAction">プログラムの終了を待つためのActionを選択</param>
        public static void CavetubeMain(
            ICavetubeAuthFactory authFactory,
            ICavetubeClientFactory clientFactory,
            IPso2LogWatcherFactory pso2Factory,
            Action waitAction)
        {
            using (CavetubeAuthManager manager = new CavetubeAuthManager(USER, PASSWORD, authFactory))
                using (var client = clientFactory.CreateCavetubeClient())
                {
                    client.Connect();

                    // 部屋名取得はapi経由でいいのだろうか?
                    // 特定ユーザーの配信をチェックするのはコメントサーバからできるかも
                    String   url     = new Uri(String.Format("http://gae.cavelis.net/live/{0}", USER)).AbsoluteUri;
                    ISummary summary = client.GetSummary(url);
                    if (summary.RoomId == null)
                    {
                        throw new ApplicationException("部屋IDの取得に失敗しました");
                    }

                    CavetubeUtility.Joinning(client, summary.RoomId, () =>
                    {
                        _logger.Debug("Joinした");
                        _logger.Debug("API Key: {0}", manager.GetApiKey());

                        LogWatch(
                            (String user, String message) =>
                        {
                            client.PostComment(user, message, manager.GetApiKey());
                        },
                            waitAction,
                            pso2Factory
                            );
                    });
                }
        }