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