public async Task Handle_GetAppAccessTokenCommand_AccessTokenExisted()
        {
            //Arrange
            var expected = new AppAccessToken()
            {
                access_token = "789012",
                expires_in   = 7200,
                time_stamp   = DateTime.Now
            };
            var db = new List <AppAccessToken>()
            {
                expected
            };

            context.SetupGet(c => c.AppAccessTokens).Returns(Mocking.GetMockDbSet(db));

            var command = new GetAppAccessTokenCommand();
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.Same(expected, db.FirstOrDefault());
        }
Example #2
0
        public async Task Get_UserInfoController()
        {
            //Arrange
            var code       = "123";
            var expected   = new UserInfo();
            var controller = createController();

            mediator.Setup(m => m.Send(It.IsAny <GetUserAccessTokenCommand>(), It.IsAny <CancellationToken>()))
            .Returns <GetUserAccessTokenCommand, CancellationToken>((command, token) => {
                Assert.Equal(code, command.Code);
                return(Task.FromResult(new UserAccessToken()
                {
                    access_token = "access token",
                    openid = "open id"
                }));
            });
            mediator.Setup(m => m.Send(It.IsAny <GetUserInfoCommand>(), It.IsAny <CancellationToken>()))
            .Returns <GetUserInfoCommand, CancellationToken>((command, token) => {
                Assert.Equal("access token", command.AccessToken);
                Assert.Equal("open id", command.OpenId);
                return(Task.FromResult(expected));
            });

            //Act
            var result = await controller.Get(code) as OkObjectResult;

            //Assert
            Assert.True(Jsonning.EqualsOrThrows(expected, result.Value));
        }
        public async Task GetAppAccessTokenAsync_WeChatCommunicator()
        {
            //Arrange
            var appid        = "wxf1759596e3365d3e";
            var secret       = "50d58aee48c9e5cb8a593b93cc182547";
            var access_token = "123456";
            var expires_in   = 7200;
            var expected     = new AppAccessToken()
            {
                access_token = access_token,
                expires_in   = expires_in,
                time_stamp   = new DateTime(2017, 1, 1)
            };

            var service = createService();

            http.Setup(h => h.GetAsync($"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"))
            .Returns(Task.FromResult(JsonConvert.SerializeObject(new {
                access_token = access_token,
                expires_in   = expires_in
            })));
            provider.Setup(p => p.GetNow()).Returns(new DateTime(2017, 1, 1));
            config["AppId"]  = appid;
            config["Secret"] = secret;

            //Act
            var actual = await service.GetAppAccessTokenAsync();

            //Assert
            http.VerifyAll();
            provider.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, actual));
        }
        public async Task GetUserInfoAsync_WeChatCommunicator()
        {
            //Arrange
            var accessToken = "access token";
            var openId      = "open id";
            var expected    = new UserInfo();
            var service     = createService();

            http.Setup(h => h.GetAsync <UserInfo>($"https://api.weixin.qq.com/sns/userinfo?access_token={accessToken}&openid={openId}&lang=zh_CN"))
            .Returns(Task.FromResult(expected));

            //Act
            var actual = await service.GetUserInfoAsync(accessToken, openId);

            //Assert
            http.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, actual));
        }
        public async Task Handle_GetUserAccessTokenCommand_OpenIdOfUserAccessTokenExisted()
        {
            //Arrange
            var expected = new UserAccessToken()
            {
                openid        = "321",
                access_token  = "1",
                expires_in    = "1",
                refresh_token = "1",
                scope         = "1"
            };
            var db = new List <UserAccessToken> {
                new UserAccessToken
                {
                    openid        = "321",
                    access_token  = "2",
                    expires_in    = "2",
                    refresh_token = "2",
                    scope         = "2"
                }
            };

            communicator.Setup(c => c.GetUserAccessTokenAsync("123"))
            .Returns(Task.FromResult(expected));
            context.SetupGet(c => c.UserAccessTokens).Returns(Mocking.GetMockDbSet(db));
            context.Setup(c => c.SaveAsync()).Returns(Task.CompletedTask);

            var command = new GetUserAccessTokenCommand(code: "123");
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            communicator.VerifyAll();
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.NotSame(expected, db.FirstOrDefault());
            Assert.Equal(expected.access_token, db.FirstOrDefault().access_token);
            Assert.Equal(expected.expires_in, db.FirstOrDefault().expires_in);
            Assert.Equal(expected.refresh_token, db.FirstOrDefault().refresh_token);
            Assert.Equal(expected.scope, db.FirstOrDefault().scope);
        }
        public async Task Handle_GetUserInfoCommand()
        {
            //Arrange
            var expected = new UserInfo();
            var db       = new List <UserInfo>();

            communicator.Setup(c => c.GetUserInfoAsync("token", "openid"))
            .Returns(Task.FromResult(expected));

            var command = new GetUserInfoCommand(accessToken: "token", openId: "openid");
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            communicator.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
        }
        public async Task GetUserAccessTokenAsync_WeChatCommunicator()
        {
            //Arrange
            var expected = new UserAccessToken();
            var appid    = "wxf1759596e3365d3e";
            var code     = "123456";
            var secret   = "50d58aee48c9e5cb8a593b93cc182547";

            var service = createService();

            http.Setup(h => h.GetAsync <UserAccessToken>($"https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={secret}&code={code}&grant_type=authorization_code"))
            .Returns(Task.FromResult(expected));
            config["AppId"]  = appid;
            config["Secret"] = secret;
            //Act
            var actual = await service.GetUserAccessTokenAsync(code);

            //Assert
            http.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, actual));
        }
        public async Task Handle_GetAppAccessTokenCommand_AccessTokenNotExisted()
        {
            //Arrange
            var expected = new AppAccessToken();
            var db       = new List <AppAccessToken>();

            communicator.Setup(c => c.GetAppAccessTokenAsync())
            .Returns(Task.FromResult(expected));
            context.SetupGet(c => c.AppAccessTokens).Returns(Mocking.GetMockDbSet(db));
            context.Setup(c => c.SaveAsync()).Returns(Task.CompletedTask);

            var command = new GetAppAccessTokenCommand();
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            communicator.VerifyAll();
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.Same(expected, db.FirstOrDefault());
        }
        public async Task Handle_GetAppAccessTokenCommand_AccessTokenOutDated()
        {
            //Arrange
            var expected = new AppAccessToken()
            {
                access_token = "789012",
                expires_in   = 7200,
                time_stamp   = DateTime.Now
            };
            var db = new List <AppAccessToken>()
            {
                new AppAccessToken {
                    access_token = "123456",
                    expires_in   = 7200,
                    time_stamp   = DateTime.Now.AddHours(-3)
                }
            };

            communicator.Setup(c => c.GetAppAccessTokenAsync())
            .Returns(Task.FromResult(expected));
            context.SetupGet(c => c.AppAccessTokens).Returns(Mocking.GetMockDbSet(db));
            context.Setup(c => c.SaveAsync()).Returns(Task.CompletedTask);

            var command = new GetAppAccessTokenCommand();
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            communicator.VerifyAll();
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.Equal(expected.access_token, db.FirstOrDefault().access_token);
            Assert.Equal(expected.expires_in, db.FirstOrDefault().expires_in);
            Assert.Equal(expected.time_stamp, db.FirstOrDefault().time_stamp);
        }