首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试Intuit IPP

测试Intuit IPP
EN

Stack Overflow用户
提问于 2013-08-13 17:13:06
回答 2查看 693关注 0票数 0

我想为QuickBooks联机插入数据创建一些单元测试。我对身份验证步骤有问题:

代码语言:javascript
复制
        public DataServices Authenticate(IntuitServicesType intuitDataServicesType)
    {
        DataServices dataServices = null;

        string accessToken = HttpContext.Current.Session["accessToken"].ToString();
        string accessTokenSecret = HttpContext.Current.Session["accessTokenSecret"].ToString();
        string companyID = HttpContext.Current.Session["realm"].ToString();
        // now auth to IA
        OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, ConfigurationManager.AppSettings["consumerKey"].ToString(), ConfigurationManager.AppSettings["consumerSecret"].ToString());
        ServiceContext context = new ServiceContext(oauthValidator, accessToken, companyID, intuitDataServicesType);

        dataServices = new DataServices(context);

        if (HttpContext.Current != null && HttpContext.Current.Session != null)
        {
            HttpContext.Current.Session["DataServices"] = dataServices;
        }

        return dataServices;
    }

在没有用户界面的单元测试项目中,如何获得访问令牌和访问令牌秘密?我不能从那个地区登录Intuit。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-13 19:19:32

TestMethod()

代码语言:javascript
复制
    public void AuthorizeWithHeadersTest()
    {
        string accessToken = ConfigurationManager.AppSettings["AccessTokenQBD"];
        string accessTokenSecret = ConfigurationManager.AppSettings["AccessTokenSecretQBD"];
        string consumerKey = ConfigurationManager.AppSettings["ConsumerKeyQBD"];
        string consumerKeySecret = ConfigurationManager.AppSettings["ConsumerSecretQBD"];
        string requestUri = "https://appcenter.intuit.com/Developer/Create";
        WebRequest webRequest = WebRequest.Create(requestUri);
        webRequest.Headers.Add("ContentType", "text/xml");
        OAuthRequestValidator target = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerKeySecret);
        target.Authorize(webRequest, string.Empty);
        Assert.IsTrue(webRequest.Headers.Count > 0);
    }
票数 3
EN

Stack Overflow用户

发布于 2013-08-13 19:12:12

我正在分享一个独立的java代码片段。您可以在.net中进行相同的尝试。

通过appcenter,您可以创建一个应用程序来获取用户密钥、消费者秘密和应用令牌。使用and资源管理器和上面的使用者密钥,使用者秘密,您可以获得访问令牌。

AppCenter - https://appcenter.intuit.com/

Apiexplorer - https://developer.intuit.com/apiexplorer?apiname=V2QBO

您可以在独立程序(setupQBO方法)中设置所有5个值。会很好的。

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;

import com.intuit.ds.qb.PartyType;
import com.intuit.ds.qb.QBCustomer;
import com.intuit.ds.qb.QBCustomerService;
import com.intuit.ds.qb.QBInvalidContextException;
import com.intuit.ds.qb.QBObjectFactory;
import com.intuit.ds.qb.QBServiceFactory;
import com.intuit.platform.client.PlatformSessionContext;
import com.intuit.platform.client.PlatformServiceType;
import com.intuit.platform.client.security.OAuthCredentials;
import org.slf4j.Logger;

// QBO API Docs - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/Customer
// JavaDocs     - http://developer-static.intuit.com/SDKDocs/QBV2Doc/ipp-java-devkit-2.0.10-SNAPSHOT-javadoc/

public class CodegenStubCustomerall {

    static String accesstoken = "";
    static String accessstokensecret = "";
    static String appToken = "";
    static String oauth_consumer_key = "";
    static String oauth_consumer_secret = "";
    static String realmID = "";
    static String dataSource = "";

    final PlatformSessionContext context;

    public CodegenStubCustomerall(PlatformSessionContext context) {
        this.context = context;
    }

    public void testAdd(){
        try {
            QBCustomer entityPojo = QBObjectFactory.getQBObject(context, QBCustomer.class);
            entityPojo.setName("TestQBCustomer12345");
            entityPojo.setTypeOf(PartyType.PERSON);

            QBCustomerService service = QBServiceFactory.getService(context, QBCustomerService.class);
            QBCustomer qbQBCustomer = service.addCustomer(context, entityPojo);

        } catch (QBInvalidContextException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public List<QBCustomer> testGetAll() {
        final List<QBCustomer> entityList = new ArrayList<QBCustomer>();
        try {
            QBCustomerService service = QBServiceFactory.getService(context, QBCustomerService.class);
                List<QBCustomer> qbCustomerList = service.findAll(context, 1,100);
                for (QBCustomer each : qbCustomerList) {
                    entityList.add(each);
                }
        } catch (QBInvalidContextException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return entityList;
    }

    public static void main(String args[]) {
        PlatformSessionContext context = getPlatformContext("QBO");
        CodegenStubCustomerall testObj = new CodegenStubCustomerall(context);
        testObj.testGetAll();
    }

    public static PlatformSessionContext getPlatformContext(String dataSource) {

        PlatformServiceType serviceType = null;
        if (dataSource.equalsIgnoreCase("QBO")) {
            serviceType = PlatformServiceType.QBO;
            setupQBO();
        }

        final OAuthCredentials oauthcredentials = new OAuthCredentials(
                oauth_consumer_key, oauth_consumer_secret, accesstoken,
                accessstokensecret);

        final PlatformSessionContext context = new PlatformSessionContext(
                oauthcredentials, appToken, serviceType, realmID);

        return context;
    }

    private static void setupQBO() {
        System.out.println("QBO token setup");
        accesstoken = "replace your tokens";
        accessstokensecret = "replace your tokens";
        appToken = "replace your tokens";
        oauth_consumer_key = "replace your tokens";
        oauth_consumer_secret = "replace your tokens";
        realmID = "7123456720";
        dataSource = "QBO";
    }

}

对于示例.net代码,可以参考此链接。apis

谢谢

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18215262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档