mercredi 4 mai 2016

Mock IAuthSession.GetOAuthTokens

I have a Service Stack Service that uses the following code

public MyResponse Get(MyRequest request){
    var authSession = GetSession();
    var tokens = authSession.GetOAuthTokens("somekey");

    var jwt = JwtPayload.Deserialize(tokens.AccessTokenSecret);
    var clientId = jwt.Claims.First(x => x.Type == "client_id").Value;

//...

I am creating a unit test around this service function, but it seems that GetOAuthTokens is a static extension method which cannot be Mocked by Moq (or by any Mocking framework for that example).

This is my current test function

    [Test]
    public void Get_ShouldReturnListOfApplications()
    {

        using (new BasicAppHost(typeof(ApplicationService).Assembly).Init())
        {
            var req = new MockHttpRequest();
            req.Items[SessionFeature.RequestItemsSessionKey] =
                new AuthUserSession
                {
                    UserName = "Mocked",
                    RequestTokenSecret="test",
                    ProviderOAuthAccess = new System.Collections.Generic.List<IAuthTokens>() { MockTokens.Object }
                };

            using (var service = HostContext.ResolveService<ApplicationService>(req))
            {
                service.Client = MockServiceClient.Object;
                service.Settings = MockSettingsProvider.Object;

                var response = service.Get(TestApplicationRequest);

            }
        }
    }

Is there anyway to mock the results of that "GetOAuthTokens" function?

Aucun commentaire:

Enregistrer un commentaire