private PlatformUser givenUser() {
   Organization org = new Organization();
   org.setOrganizationId(ORGANIZATION_ID);
   PlatformUser user = new PlatformUser();
   user.setUserId(USER_ID);
   user.setOrganization(org);
   return user;
 }
  private List<Product> givenProducts() {
    List<Product> products = new ArrayList<Product>();

    Product product1 = new Product();
    product1.setKey(PRODUCTKEY_1);
    product1.setProductId(PRODUCTID_1);
    Organization org1 = new Organization();
    org1.setOrganizationId(VENDORID_1);
    product1.setVendor(org1);
    Product product2 = new Product();
    product2.setProductId(PRODUCTID_2);
    product2.setKey(PRODUCTKEY_2);
    Organization org2 = new Organization();
    org2.setOrganizationId(VENDORID_2);
    product2.setVendor(org2);
    products.add(product1);
    products.add(product2);
    return products;
  }
 private PlatformUser givenUser(String locale) {
   Organization org = new Organization();
   org.setOrganizationId(ORGANIZATION_ID);
   org.setName(ORGANIZATION_NAME);
   PlatformUser user = new PlatformUser();
   user.setUserId(USER_ID);
   user.setOrganization(org);
   user.setLocale(locale);
   return user;
 }
  private PlatformUser createReseller(Organization custOrg) {
    PlatformUser resellerAdmin = new PlatformUser();

    Organization resellerOrg = new Organization();
    resellerOrg.setOrganizationId(RESELLER_ORGID);
    addRole(resellerOrg, OrganizationRoleType.RESELLER);

    createOrgReference(resellerOrg, custOrg, OrganizationReferenceType.RESELLER_TO_CUSTOMER);

    resellerAdmin.setOrganization(resellerOrg);
    return resellerAdmin;
  }
  private PlatformUser createBroker(Organization custOrg) {
    PlatformUser brokerAdmin = new PlatformUser();

    Organization brokerOrg = new Organization();
    brokerOrg.setOrganizationId(BROKER_ORGID);
    addRole(brokerOrg, OrganizationRoleType.BROKER);

    createOrgReference(brokerOrg, custOrg, OrganizationReferenceType.BROKER_TO_CUSTOMER);

    brokerAdmin.setOrganization(brokerOrg);
    return brokerAdmin;
  }
  private PlatformUser createSupplier(Organization custOrg) {
    PlatformUser supplierAdmin = new PlatformUser();

    Organization supplierOrg = new Organization();
    supplierOrg.setOrganizationId(SUPPLIER_ORGID);
    addRole(supplierOrg, OrganizationRoleType.SUPPLIER);

    createOrgReference(supplierOrg, custOrg, OrganizationReferenceType.SUPPLIER_TO_CUSTOMER);

    supplierAdmin.setOrganization(supplierOrg);
    return supplierAdmin;
  }
 @Before
 public void setup() throws Exception {
   dsMock = mock(DataService.class);
   Organization org = new Organization();
   org.setOrganizationId(ORGANIZATIONID);
   PlatformUser user = new PlatformUser();
   user.setUserId(USERID_1);
   user.setLocale("en");
   user.setOrganization(org);
   when(dsMock.getCurrentUser()).thenReturn(user);
   marketplace = new Marketplace();
   marketplace.setKey(1000l);
   doReturn(marketplace).when(dsMock).getReferenceByBusinessKey(any(Marketplace.class));
 }
  @Before
  public void setup() throws Exception {
    ds = mock(DataService.class);

    pt = new PaymentType();
    pt.setPaymentTypeId(PaymentType.INVOICE);
    pt.setKey(12345);

    Organization op = new Organization();
    op.setOrganizationId(OrganizationRoleType.PLATFORM_OPERATOR.name());

    supplier = new Organization();
    supplier.setOrganizationId("supplier");
    Organizations.grantOrganizationRole(supplier, OrganizationRoleType.SUPPLIER);

    reseller = new Organization();
    reseller.setOrganizationId("reseller");
    Organizations.grantOrganizationRole(reseller, OrganizationRoleType.RESELLER);

    OrganizationReference ref =
        OrganizationReferences.addReference(
            op, supplier, OrganizationReferenceType.PLATFORM_OPERATOR_TO_SUPPLIER);
    OrganizationReferences.enablePayment(ref, pt)
        .setOrganizationRole(new OrganizationRole(OrganizationRoleType.SUPPLIER));

    ref =
        OrganizationReferences.addReference(
            op, reseller, OrganizationReferenceType.PLATFORM_OPERATOR_TO_RESELLER);
    OrganizationReferences.enablePayment(ref, pt)
        .setOrganizationRole(new OrganizationRole(OrganizationRoleType.RESELLER));

    customer = new Organization();
    customer.setOrganizationId("customer");

    noCustomer = new Organization();
    noCustomer.setOrganizationId("noCustomer");

    ref =
        OrganizationReferences.addReference(
            supplier, customer, OrganizationReferenceType.SUPPLIER_TO_CUSTOMER);
    OrganizationReferences.enablePayment(ref, pt);

    ref =
        OrganizationReferences.addReference(
            reseller, customer, OrganizationReferenceType.RESELLER_TO_CUSTOMER);
    OrganizationReferences.enablePayment(ref, pt);

    product = new Product();
    product.setKey(9876);
    product.setVendor(supplier);
    product.setType(ServiceType.TEMPLATE);
    product.setPaymentTypes(Arrays.asList(new ProductToPaymentType(product, pt)));

    pcf = new PaymentConfigurationFilter(ds);

    user = new PlatformUser();
    user.setOrganization(supplier);

    when(ds.getCurrentUser()).thenReturn(user);
    when(ds.getReference(eq(Product.class), eq(product.getKey()))).thenReturn(product);
    when(ds.getReference(eq(Product.class), eq(PROD_NOT_FOUND_KEY)))
        .thenThrow(new ObjectNotFoundException(ClassEnum.SERVICE, "product"));

    when(ds.getReferenceByBusinessKey(any(DomainObject.class)))
        .thenAnswer(
            new Answer<DomainObject<?>>() {

              public DomainObject<?> answer(InvocationOnMock invocation) throws Throwable {
                Object object = invocation.getArguments()[0];
                if (object instanceof Organization) {
                  Organization o = (Organization) object;
                  if (customer.getOrganizationId().equals(o.getOrganizationId())) {
                    return customer;
                  }
                  if (noCustomer.getOrganizationId().equals(o.getOrganizationId())) {
                    return noCustomer;
                  }
                  throw new ObjectNotFoundException(ClassEnum.ORGANIZATION, o.getOrganizationId());
                }
                throw new ObjectNotFoundException(
                    ClassEnum.ORGANIZATION, object.getClass().getName());
              }
            });
  }
 private Organization createCustomer() {
   Organization customerOrg = new Organization();
   customerOrg.setOrganizationId(CUSTOMER_ORGID);
   return customerOrg;
 }