public async void GetTokenTest() { var rawClientMock = new Mock <IMilkRawClient>(); rawClientMock .Setup(client => client.Invoke(It.IsAny <string>(), It.IsAny <IDictionary <string, string> >())) .Callback <string, IDictionary <string, string> >((method, parameters) => { Assert.Equal("rtm.auth.getToken", method); Assert.Equal("frob123", parameters["frob"]); }) .Returns(() => Task.FromResult( @" <rsp stat=""ok""> <auth> <token>410c57262293e9d937ee5be75eb7b0128fd61b61</token> <perms>delete</perms> <user id=""1"" username=""bob"" fullname=""Bob T. Monkey"" /> </auth> </rsp> ")); var rawClient = rawClientMock.Object; var auth = new MilkClient(rawClient).Auth; var frob = "frob123"; var authToken = await auth.GetToken(frob); Assert.Equal("410c57262293e9d937ee5be75eb7b0128fd61b61", authToken.Token); Assert.Equal(MilkPerms.Delete, authToken.Perms); }
public async void EchoTest() { var rawClientMock = new Mock <IMilkRawClient>(); rawClientMock .Setup(client => client.Invoke(It.IsAny <string>(), It.IsAny <IDictionary <string, string> >())) .Callback <string, IDictionary <string, string> >((method, parameters) => { Assert.Equal("rtm.test.echo", method); Assert.Equal("bar", parameters["foo"]); }) .Returns(() => Task.FromResult <string>(@" <rsp stat=""ok""> <method>rtm.test.echo</method> <foo>bar</foo> </rsp>" )); var rawClient = rawClientMock.Object; var test = new MilkClient(rawClient).Test; var param = new Dictionary <string, string> { { "foo", "bar" } }; var result = await test.Echo(param); Assert.Equal("bar", result["foo"]); }
public void GetListTestForAll() { var rawClientMock = new Mock <IMilkRawClient>(); rawClientMock .Setup(client => client.Invoke(It.IsAny <string>(), It.IsAny <IDictionary <string, string> >())) .Callback <string, IDictionary <string, string> >((method, parameters) => { Assert.Equal("rtm.tasks.getList", method); }) .Returns(() => Task.FromResult(@" <rsp stat=""ok""> <tasks> <list id=""1""> <taskseries id=""2"" created=""2015-05-07T10:19:54Z"" modified=""2015-05-07T10:19:54Z"" name=""Get Bananas"" source=""api"" url=""http://example.com"" location_id=""""> <tags/> <participants/> <notes/> <task id=""3"" due="""" has_due_time=""0"" added=""2015-05-07T10:19:54Z"" completed="""" deleted="""" priority=""N"" postponed=""0"" estimate=""""/> </taskseries> </list> </tasks> </rsp> ")); var rawClient = rawClientMock.Object; var milkTasks = new MilkClient(rawClient).Tasks; IObservable <MilkTask> taskObservable = milkTasks.GetList(); taskObservable.Subscribe(task => { Assert.Equal(1, task.ListId); MilkTaskSeries taskSeries = task.TaskSeries; Assert.Equal(2, taskSeries.Id); Assert.Equal(3, task.Id); }); }
public void GetListTestForAllList() { var rawClientMock = new Mock <IMilkRawClient>(); rawClientMock .Setup(client => client.Invoke(It.IsAny <string>(), It.IsAny <IDictionary <string, string> >())) .Callback <string, IDictionary <string, string> >((method, parameters) => { Assert.Equal("rtm.lists.getList", method); }) .Returns(() => Task.FromResult(@" <rsp stat=""ok""> <lists> <list id=""100653"" name=""Inbox"" deleted=""1"" locked=""1"" archived=""1"" position=""-1"" smart=""1""> <filter>(priority:1)</filter> </list> </lists> </rsp> ")); var rawClient = rawClientMock.Object; var lists = new MilkClient(rawClient).Lists; IObservable <MilkList> listObservable = lists.GetList(); listObservable.Subscribe( list => { Assert.Equal(100653, list.Id); Assert.Equal("Inbox", list.Name); Assert.True(list.Deleted); Assert.True(list.Locked); Assert.True(list.Archived); Assert.Equal(-1, list.Position); Assert.True(list.Smart); Assert.Equal("(priority:1)", list.Filter); }); }
public async void GetFrobTest() { var rawClientMock = new Mock <IMilkRawClient>(); rawClientMock .Setup(client => client.Invoke(It.IsAny <string>(), It.IsAny <IDictionary <string, string> >())) .Callback <string, IDictionary <string, string> >((method, parameters) => { Assert.Equal("rtm.auth.getFrob", method); }) .Returns(() => Task.FromResult( @" <rsp stat=""ok""> <frob>frob</frob> </rsp> ")); var rawClient = rawClientMock.Object; var auth = new MilkClient(rawClient).Auth; var frob = await auth.GetFrob(); Assert.Equal("frob", frob); }
static async Task Main(string[] args) { // rename `appConfig.sample.json` to `appConfig.json` // and modify "api_key" and "api_sig" values. var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appConfig.json"); var configuration = builder.Build(); var context = new MilkContext(configuration["api_key"], configuration["api_sig"]); try { // rtm.test.* method client var test = new MilkTest(context); var param = new Dictionary <string, string> { { "foo", "bar" } }; var rsp = await test.Echo(param); Console.WriteLine(rsp["foo"]); // create client var milkClient = new MilkClient(context); // authorization var frob = await milkClient.Auth.GetFrob(); Console.WriteLine($"frob:{frob}"); var authUrl = milkClient.Auth.GenerateAuthUrl(MilkPerms.Delete, frob); Console.WriteLine($"authUrl: {authUrl}"); OpenUrlOnDefaultWebBrowser(authUrl); Console.WriteLine("Please authenticate with the web page, and push any key."); Console.ReadKey(); var authToken = await milkClient.Auth.GetToken(frob); Console.WriteLine($"token: {authToken.Token}, perms: {authToken.Perms}"); milkClient.Context.AuthToken = authToken; // rtm.lists.* method client milkClient.Lists.GetList() .Subscribe( // OnNext list => Console.WriteLine($"id: {list.Id}, name: {list.Name}"), // OnError (ex) => Console.WriteLine(ex.Message), // OnComplete () => Console.WriteLine("all list have gotten") ); Console.ReadKey(); } catch (MilkHttpException httpEx) { Console.WriteLine($"http status code: {httpEx.StatusCode}"); } catch (MilkFailureException failEx) { Console.WriteLine($"API call is failed | code: {failEx.Code}, msg: {failEx.Msg}"); } }