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