public async Task ConnectedEventTest()
        {
            var options    = new Mock <ICommentOptions>();
            var serverMock = new Mock <IYouTubeLibeServer>();

            serverMock.Setup(s => s.GetEnAsync("https://www.youtube.com/channel/UCv1fFr156jc65EMiLbaLImw/live")).Returns(Task.FromResult(Tools.GetSampleData("Channel_live.txt")));
            serverMock.Setup(s => s.GetAsync("https://www.youtube.com/live_chat?v=klvzbBP7zM8&is_popout=1", It.Is <CookieContainer>(c => true))).Returns(Task.FromResult(Tools.GetSampleData("LiveChat.txt")));
            var siteOptions         = new YouTubeLiveSiteOptions();
            var logger              = new Mock <ILogger>();
            var userStore           = new Mock <IUserStoreManager>();
            var broweserProfileMock = new Mock <IBrowserProfile>();

            broweserProfileMock.Setup(x => x.GetCookieCollection(It.IsAny <string>())).Returns(new List <Cookie>());

            var b  = false;
            var cp = new CommentProvider(options.Object, serverMock.Object, siteOptions, logger.Object, userStore.Object);

            cp.Connected += (s, e) =>
            {
                b = e.IsInputStoringNeeded;
            };
            await cp.ConnectAsync("https://www.youtube.com/channel/UCv1fFr156jc65EMiLbaLImw", broweserProfileMock.Object);

            Assert.IsTrue(b);
        }
        public async Task 短すぎるコメントを投稿したときのエラーメッセージを正しく処理できるか()
        {
            var data        = Tools.GetSampleData("CommentPost_Result_TooShort.txt");
            var optionsMock = new Mock <ICommentOptions>();
            var serverMock  = new Mock <IYouTubeLibeServer>();

            serverMock.Setup(s => s.PostAsync(It.IsAny <string>(), It.IsAny <Dictionary <string, string> >(), It.IsAny <CookieContainer>())).Returns(Task.FromResult(data));
            var siteOptions          = new YouTubeLiveSiteOptions();
            var loggerMock           = new Mock <ILogger>();
            var userStoreManagerMock = new Mock <IUserStoreManager>();
            var broweserProfileMock  = new Mock <IBrowserProfile>();
            var cpMock = new Mock <EachConnection>(loggerMock.Object, new CookieContainer(), optionsMock.Object, serverMock.Object, siteOptions, new Dictionary <string, int>(), new System.Collections.Generic.SynchronizedCollection <string>(), new Mock <ICommentProvider>().Object, userStoreManagerMock.Object);

            //var cpMock = new Mock<EachConnection>(options.Object, serverMock.Object, siteOptions, loggerMock.Object, userStore.Object);
            cpMock.Protected().Setup <PostCommentContext>("PostCommentContext").Returns(new PostCommentContext()
            {
                Sej = ""
            });
            var  cp             = cpMock.Object;
            bool expectedResult = false;

            cp.MessageReceived += (s, e) =>
            {
                var message = e.Message as IInfoMessage;
                if (message.Text == "コメント投稿に失敗しました(コメントが短すぎます。)")
                {
                    expectedResult = true;
                }
            };
            await cp.PostCommentAsync("");

            Assert.IsTrue(expectedResult);
        }
Exemple #3
0
 public C(ICommentOptions options, IYouTubeLibeServer server, YouTubeLiveSiteOptions siteOptions, ILogger logger, IUserStore userStore, string clientIdPrefix, string sej, string sessionToken)
     : base(logger, new CookieContainer(), options, server, siteOptions, new Dictionary <string, int>(), new System.Collections.Generic.SynchronizedCollection <string>(), new Mock <ICommentProvider>().Object, userStore)
 {
     PostCommentContext = new PostCommentContext
     {
         ClientIdPrefix = clientIdPrefix,
         Sej            = sej,
         SessionToken   = sessionToken,
     };
 }
        public CommentProviderNext(ICommentOptions options, IYouTubeLiveServer server, YouTubeLiveSiteOptions siteOptions, ILogger logger, IUserStoreManager userStoreManager)
            : base(logger, options)
        {
            _options          = options;
            _siteOptions      = siteOptions;
            _logger           = logger;
            _userStoreManager = userStoreManager;
            _server           = server;

            CanConnect    = true;
            CanDisconnect = false;
        }
        private Mock <EachConnection> CreateConnection(ILogger logger, CookieContainer cc, ICommentOptions options, IYouTubeLibeServer server,
                                                       YouTubeLiveSiteOptions siteOptions, Dictionary <string, int> userCommentCountDict, SynchronizedCollection <string> receivedCommentIds,
                                                       ICommentProvider cp, IUserStoreManager userStoreManager, Guid siteContextGuid)
        {
            var cpMock = new Mock <EachConnection>(logger, cc, options, server, siteOptions, userCommentCountDict, receivedCommentIds, cp, userStoreManager)
            {
                CallBase = true
            };

            cpMock.Object.SiteContextGuid = siteContextGuid;
            return(cpMock);
        }
        public async Task GetCurrentUserInfoAsync_NotLoggedInTest()
        {
            var data       = Tools.GetSampleData("Embed_notloggedin.txt");
            var options    = new Mock <ICommentOptions>();
            var serverMock = new Mock <IYouTubeLibeServer>();

            serverMock.Setup(s => s.GetAsync(It.IsAny <string>(), It.IsAny <CookieContainer>())).Returns(Task.FromResult(data));
            var siteOptions         = new YouTubeLiveSiteOptions();
            var loggerMock          = new Mock <ILogger>();
            var userStore           = new Mock <IUserStoreManager>();
            var broweserProfileMock = new Mock <IBrowserProfile>();
            var cp   = new CommentProvider(options.Object, serverMock.Object, siteOptions, loggerMock.Object, userStore.Object);
            var info = await cp.GetCurrentUserInfo(broweserProfileMock.Object);

            Assert.IsFalse(info.IsLoggedIn);
        }
Exemple #7
0
        public async Task PostTest()
        {
            var comment        = "あいうえお";
            var clientIdPrefix = "a";
            var sej            = "b";
            var sessionToken   = "c";
            var options        = new Mock <ICommentOptions>();
            var server         = new Server(clientIdPrefix, comment, sej, sessionToken);
            var siteOptions    = new YouTubeLiveSiteOptions();
            var logger         = new Mock <ILogger>();
            var userStore      = new Mock <IUserStore>();

            var cp = new C(options.Object, server, siteOptions, logger.Object, userStore.Object, clientIdPrefix, sej, sessionToken);

            //TODOちゃんとtestという文字列が投稿されるかテストする
            await cp.PostCommentAsync(comment);
        }
        public async Task PostTest()
        {
            var comment        = "あいうえお";
            var clientIdPrefix = "a";
            var sej            = "b";
            var sessionToken   = "c";
            var cc             = new CookieContainer();
            var optionsMock    = new Mock <ICommentOptions>();
            var options        = optionsMock.Object;
            var server         = new Server(clientIdPrefix, comment, sej, sessionToken);
            var serverMock     = new Mock <IYouTubeLibeServer>();
            //serverMock.Setup(s => s.PostAsync(It.IsAny<string>(), It.IsAny<Dictionary<string,string>>(), It.IsAny<CookieContainer>())).Callback<Task<string>>(a=>PostAsync(a,b,c));
            //serverMock.Verify(h=>h.PostAsync())
            var siteOptions          = new YouTubeLiveSiteOptions();
            var loggerMock           = new Mock <ILogger>();
            var logger               = loggerMock.Object;
            var userStoreMock        = new Mock <IUserStoreManager>();
            var userStoreManager     = userStoreMock.Object;
            var userCommentCountDict = new Dictionary <string, int>();
            var receivedCommentIds   = new SynchronizedCollection <string>();
            var cpMock               = CreateCommentProviderMock(options, server, siteOptions, logger, userStoreManager);
            var cp = cpMock.Object;
            //var cp = new C(options.Object, server, siteOptions, logger.Object, userStore.Object, clientIdPrefix, sej, sessionToken);
            var connMock = CreateConnection(logger, cc, options, server, siteOptions, userCommentCountDict, receivedCommentIds, cp, userStoreManager, Guid.NewGuid());

            connMock.Protected().Setup <PostCommentContext>("PostCommentContext").Returns(new PostCommentContext
            {
                ClientIdPrefix = clientIdPrefix,
                Sej            = sej,
                SessionToken   = sessionToken,
            });
            var connection = connMock.Object;
            //TODOちゃんとtestという文字列が投稿されるかテストする
            await connection.PostCommentAsync(comment);

            connMock.VerifyAll();
        }
        public async Task 再接続時の初期コメントが重複判定されるか()
        {
            var optionsMock = new Mock <ICommentOptions>();
            var options     = optionsMock.Object;
            var serverMock  = new Mock <IYouTubeLibeServer>();

            serverMock.Setup(s => s.GetAsync("https://www.youtube.com/live_chat?v=EiLzFNajLas&is_popout=1", It.Is <CookieContainer>(c => true))).Returns(Task.FromResult(Tools.GetSampleData("LiveChat.txt")));
            serverMock.Setup(s => s.GetBytesAsync("https://www.youtube.com/live_chat/get_live_chat?continuation=0ofMyAPAARqQAUNpTVNJUW9ZVlVOSGFsWTBZbk5ETkROUGJpMVpkV2xNV21ObVREQjNFZ1V2YkdsMlpScERxcm5CdlFFOUNqdG9kSFJ3Y3pvdkwzZDNkeTU1YjNWMGRXSmxMbU52YlM5c2FYWmxYMk5vWVhRX2RqMUJkVVpQVDFWMFNYbFZXU1pwYzE5d2IzQnZkWFE5TVNBQzABSiAIABAAGAAgACoHNjVlODgzZjoAQABKAFDvwL3QuYjcAmgBggEECAEQAA%253D%253D&pbj=1")).ThrowsAsync(new HttpRequestException());
            var server = serverMock.Object;

            var siteOptions          = new YouTubeLiveSiteOptions();
            var loggerMock           = new Mock <ILogger>();
            var logger               = loggerMock.Object;
            var userStoreManagerMock = new Mock <IUserStoreManager>();

            userStoreManagerMock.Setup(u => u.GetUser(SiteType.YouTubeLive, It.IsAny <string>())).Returns(new UserTest("1"));
            var userStore          = userStoreManagerMock.Object;
            var browserProfileMock = new Mock <IBrowserProfile>();

            browserProfileMock.Setup(b => b.GetCookieCollection(It.IsAny <string>())).Returns(new List <Cookie>());
            var browserProfile = browserProfileMock.Object;

            var userCommentCountDict = new Dictionary <string, int>();
            var receivedCommentIds   = new SynchronizedCollection <string>();
            var cpMock = new Mock <CommentProvider>(options, server, siteOptions, logger, userStore)
            {
                CallBase = true
            };
            var cp = cpMock.Object;
            var eachConnectionMock = CreateConnection(logger, new CookieContainer(), options, server, siteOptions, userCommentCountDict, receivedCommentIds, cp, userStore, Guid.NewGuid());

            eachConnectionMock.Protected().Setup <Task>("CreateMetadataReceivingTask", ItExpr.Ref <IMetadataProvider> .IsAny, ItExpr.IsAny <BrowserType>(), ItExpr.IsAny <string>(), ItExpr.IsAny <string>()).Returns(Task.CompletedTask);
            cpMock.Protected().Setup <EachConnection>("CreateConnection",
                                                      ItExpr.IsAny <ILogger>(),
                                                      ItExpr.IsAny <CookieContainer>(),
                                                      ItExpr.IsAny <ICommentOptions>(),
                                                      ItExpr.IsAny <IYouTubeLibeServer>(),
                                                      ItExpr.IsAny <YouTubeLiveSiteOptions>(),
                                                      ItExpr.IsAny <Dictionary <string, int> >(),
                                                      ItExpr.IsAny <SynchronizedCollection <string> >(),
                                                      ItExpr.IsAny <ICommentProvider>(),
                                                      ItExpr.IsAny <IUserStoreManager>(),
                                                      ItExpr.IsAny <Guid>()
                                                      ).Returns(eachConnectionMock.Object);
            int i = 0;
            int j = 0;

            cp.MessageReceived += (s, e) =>
            {
                if (e.Message is YouTubeLiveComment)
                {
                    i++;
                }
                else if (e.Message is IInfoMessage info && info.Type <= InfoType.Error)
                {
                    Debug.WriteLine(info.Text);
                    j++;
                }
                if (i > 75)
                {
                    Assert.Fail();
                }
                if (j >= 2)
                {
                    cp.Disconnect();
                }
            };
            await cp.ConnectAsync("https://www.youtube.com/watch?v=EiLzFNajLas", browserProfile);

            Assert.AreEqual(75, i);
            Assert.AreEqual(2, j);
        }
 private static Mock <CommentProvider> CreateCommentProviderMock(ICommentOptions options, IYouTubeLibeServer server, YouTubeLiveSiteOptions siteOptions, ILogger logger, IUserStoreManager userStoreManager)
 {
     return(new Mock <CommentProvider>(options, server, siteOptions, logger, userStoreManager));
 }