Exemplo n.º 1
0
    def test_parse_legacy_contract_items(self):
        raw_contract_items = [get_fixture("contract-item-legacy")]

        parsed_contract_items = parse_contract_items(
            raw_items=raw_contract_items)

        expectation = [
            ContractItem(
                contract_id="cAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                created_at="2014-01-01T10:00:00Z",
                start_date="2014-01-01T10:00:00Z",
                end_date="2015-01-01T00:00:00Z",
                reason="contract_created",
                value=5,
                product_listing_id=None,
                purchase_id=None,
                trial_id=None,
                renewal=Renewal(
                    id="rAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                    contract_id="cAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                    actionable=True,
                    start_date="2014-11-01T00:00:00Z",
                    end_date="2015-01-01T00:00:00Z",
                    status="pending",
                    new_contract_start="2015-01-01T00:00:00Z",
                    price=5000,
                    currency="USD",
                ),
            ),
        ]

        self.assertIsInstance(parsed_contract_items, List)
        self.assertEqual(to_dict(expectation), to_dict(parsed_contract_items))
Exemplo n.º 2
0
    def test_parse_contracts(self):
        raw_contracts = get_fixture("contracts")
        parsed_contracts = parse_contracts(raw_contracts=raw_contracts)

        expectation = [
            Contract(
                id="cAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                account_id="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                name="Product Name 2",
                product_id="product-id-2",
                entitlements=[
                    Entitlement(
                        type="entitlement-type",
                        support_level=None,
                        enabled_by_default=True,
                    ),
                ],
                items=[
                    ContractItem(
                        contract_id="cAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                        created_at="2017-01-02T10:00:00Z",
                        start_date="2017-01-02T10:00:00Z",
                        end_date="2018-01-02T10:00:00Z",
                        reason="trial_started",
                        value=1,
                        product_listing_id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                        purchase_id=None,
                        trial_id="tAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                    ),
                ],
            )
        ]

        self.assertIsInstance(parsed_contracts, List)
        self.assertEqual(to_dict(expectation), to_dict(parsed_contracts))
Exemplo n.º 3
0
    def test_parse_entitlements(self):
        raw_entitlements = get_fixture("entitlements")
        parsed_entitlements = parse_entitlements(
            raw_entitlements=raw_entitlements)

        expectation = [
            Entitlement(
                type="entitlement-type",
                support_level=None,
                enabled_by_default=True,
            ),
            Entitlement(
                type="entitlement-type-2",
                support_level=None,
                enabled_by_default=False,
            ),
            Entitlement(
                type="support",
                support_level="advanced",
                enabled_by_default=False,
            ),
        ]

        self.assertIsInstance(parsed_entitlements, List)
        self.assertEqual(to_dict(expectation), to_dict(parsed_entitlements))
Exemplo n.º 4
0
    def test_parse_listings(self):
        raw_products = get_fixture("products")
        raw_product_listings = get_fixture("product-listings")

        parsed_listings = parse_product_listings(
            raw_product_listings=raw_product_listings,
            raw_products=raw_products,
        )

        expectation = {
            "lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2":
            Listing(
                id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                name="product-id-2",
                marketplace="canonical-ua",
                status="active",
                product=Product(
                    name="Product Name 2",
                    id="product-id-2",
                ),
                price=1000,
                currency="USD",
                trial_days=None,
                period=None,
            )
        }

        self.assertIsInstance(parsed_listings, Dict)
        self.assertEqual(to_dict(expectation), to_dict(parsed_listings))
Exemplo n.º 5
0
    def test_parse_users(self):
        raw_users = get_fixture("users")

        parsed_users = parse_users(raw_users)

        joe = User(
            display_name="Joe Doe",
            name="joedoe2021",
            email="*****@*****.**",
            id="aAbBcCdD",
            last_login_at="2021-09-10T12:00:00Z",
            first_login_at="2021-09-10T12:00:00Z",
            verified=True,
        )
        joe.set_user_role_on_account("admin")

        expectation = [
            joe,
            User(
                display_name="Jane Doe",
                name="janedoe2021",
                email="*****@*****.**",
                id="aAbBcCdD2",
                last_login_at="2021-09-10T12:00:00Z",
                first_login_at="2021-09-10T12:00:00Z",
                verified=False,
            ),
        ]

        self.assertEqual(to_dict(parsed_users), to_dict(expectation))
Exemplo n.º 6
0
    def test_parse_subscriptions(self):
        raw_subscriptions = get_fixture("subscriptions")

        parsed_subscriptions = parse_subscriptions(
            raw_subscriptions=raw_subscriptions)

        expectation = [
            Subscription(
                id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                account_id="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                marketplace="canonical-ua",
                period="monthly",
                status="active",
                last_purchase_id="pAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                is_auto_renewing=True,
                items=[
                    SubscriptionItem(
                        subscription_id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                        product_listing_id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                        value=3,
                    ),
                ],
                started_with_trial=None,
            ),
        ]

        self.assertIsInstance(parsed_subscriptions, List)
        self.assertEqual(to_dict(expectation), to_dict(parsed_subscriptions))
Exemplo n.º 7
0
    def test_parse_subscription(self):
        raw_subscription = get_fixture("subscription")

        parsed_subscription = parse_subscription(
            raw_subscription=raw_subscription)

        expectation = Subscription(
            id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
            account_id="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
            marketplace="canonical-ua",
            period="yearly",
            status="active",
            last_purchase_id="pAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
            pending_purchases=["pAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP222"],
            items=[
                SubscriptionItem(
                    subscription_id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                    product_listing_id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                    value=3,
                ),
            ],
            started_with_trial=True,
            in_trial=True,
        )

        self.assertIsInstance(parsed_subscription, Subscription)
        self.assertEqual(to_dict(expectation), to_dict(parsed_subscription))
Exemplo n.º 8
0
    def test_parse_no_contract_items(self):
        parsed_contract_items = parse_contract_items(None)
        self.assertIsInstance(parsed_contract_items, List)
        self.assertEqual([], to_dict(parsed_contract_items))

        parsed_contract_items = parse_contract_items([])
        self.assertIsInstance(parsed_contract_items, List)
        self.assertEqual([], to_dict(parsed_contract_items))
Exemplo n.º 9
0
    def test_parse_no_entitlements(self):
        parsed_entitlements = parse_entitlements(None)
        self.assertIsInstance(parsed_entitlements, List)
        self.assertEqual([], to_dict(parsed_entitlements))

        parsed_entitlements = parse_entitlements([])
        self.assertIsInstance(parsed_entitlements, List)
        self.assertEqual([], to_dict(parsed_entitlements))
Exemplo n.º 10
0
    def test_parse_product(self):
        raw_product = get_fixture("product")
        parsed_product = parse_product(raw_product=raw_product)

        expectation = Product(
            id="product-id",
            name="Product Name",
        )

        self.assertIsInstance(parsed_product, Product)
        self.assertEqual(to_dict(expectation), to_dict(parsed_product))
Exemplo n.º 11
0
    def test_parse_account(self):
        raw_account = get_fixture("account")
        parsed_account = parse_account(raw_account=raw_account)

        expectation = Account(
            id="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
            name="Account Name",
        )

        self.assertIsInstance(parsed_account, Account)
        self.assertEqual(to_dict(expectation), to_dict(parsed_account))
Exemplo n.º 12
0
    def test_parse_no_subscription_items(self):
        subscription_id = "random-id"
        parsed_subscription_items = parse_subscription_items(
            subscription_id, None)
        self.assertIsInstance(parsed_subscription_items, List)
        self.assertEqual([], to_dict(parsed_subscription_items))

        parsed_subscription_items = parse_subscription_items(
            subscription_id, [])
        self.assertIsInstance(parsed_subscription_items, List)
        self.assertEqual([], to_dict(parsed_subscription_items))
Exemplo n.º 13
0
def get_user_subscriptions(**kwargs):
    g.api.set_convert_response(True)

    email = kwargs.get("email")

    listings = g.api.get_product_listings("canonical-ua")
    accounts = g.api.get_accounts(email=email)

    user_summary = []
    for account in accounts:
        contracts = g.api.get_account_contracts(account_id=account.id)
        subscriptions = g.api.get_account_subscriptions(
            account_id=account.id,
            marketplace="canonical-ua",
        )

        user_summary.append({
            "account": account,
            "contracts": contracts,
            "subscriptions": subscriptions,
        })

    user_subscriptions = build_user_subscriptions(user_summary, listings)

    return flask.jsonify(to_dict(user_subscriptions))
Exemplo n.º 14
0
    def test_parse_user(self):
        raw_user = get_fixture("user")

        parsed_user = parse_user(raw_user)

        expectation = User(
            display_name="Joe Doe",
            name="joedoe2021",
            email="*****@*****.**",
            id="aAbBcCdD",
            last_login_at="2021-09-10T12:00:00Z",
            first_login_at="2021-09-10T12:00:00Z",
            verified=True,
        )

        self.assertEqual(to_dict(parsed_user), to_dict(expectation))
Exemplo n.º 15
0
    def test_parse_accounts(self):
        raw_accounts = get_fixture("accounts")
        parsed_accounts = parse_accounts(raw_accounts=raw_accounts)

        expectation = [
            Account(
                id="a123AbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                name="Free",
            ),
            Account(
                id="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                name="Account Name",
            ),
        ]

        self.assertIsInstance(parsed_accounts, List)
        self.assertEqual(to_dict(expectation), to_dict(parsed_accounts))
Exemplo n.º 16
0
    def test_parse_renewal(self):
        raw_renewal = get_fixture("renewal")
        parsed_renewal = parse_renewal(raw_renewal=raw_renewal)

        expectation = Renewal(
            id="rAaBbCcDdEeFf",
            contract_id="cAaBbCcDdEeFf",
            actionable=False,
            start_date="2020-11-01T00:00:00Z",
            end_date="2021-01-01T00:00:00Z",
            status="done",
            new_contract_start="2021-01-01T00:00:00Z",
            price=11000,
            currency="USD",
        )

        self.assertEqual(to_dict(expectation), to_dict(parsed_renewal))
Exemplo n.º 17
0
    def test_parse_listings_with_no_listings(self):
        raw_products = None
        raw_product_listings = None

        parsed_listings = parse_product_listings(
            raw_product_listings=raw_product_listings,
            raw_products=raw_products,
        )

        self.assertIsInstance(parsed_listings, Dict)
        self.assertEqual({}, to_dict(parsed_listings))
Exemplo n.º 18
0
    def test_parse_purchase_contract_items(self):
        raw_contract_items = [get_fixture("contract-item-shop")]

        parsed_contract_items = parse_contract_items(
            raw_items=raw_contract_items)

        expectation = [
            ContractItem(
                contract_id="cAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                created_at="2014-02-01T10:00:00Z",
                start_date="2014-03-01T10:00:00Z",
                end_date="2015-03-01T00:00:00Z",
                reason="purchase_made",
                value=1,
                product_listing_id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                purchase_id="pAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                trial_id=None,
            ),
        ]

        self.assertIsInstance(parsed_contract_items, List)
        self.assertEqual(to_dict(expectation), to_dict(parsed_contract_items))
Exemplo n.º 19
0
    def test_parse_subscription_items(self):
        raw_subscription_items = get_fixture("subscription-items")
        parsed_subscription_items = parse_subscription_items(
            subscription_id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
            raw_items=raw_subscription_items,
        )

        expectation = [
            SubscriptionItem(
                subscription_id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                product_listing_id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                value=4,
            ),
            SubscriptionItem(
                subscription_id="sAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP",
                product_listing_id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
                value=2,
            ),
        ]

        self.assertIsInstance(parsed_subscription_items, List)
        self.assertEqual(to_dict(expectation),
                         to_dict(parsed_subscription_items))
Exemplo n.º 20
0
    def test_parse_listing_with_no_product(self):
        raw_products = []
        raw_product_listing = get_fixture("product-listing")

        parsed_listing = parse_product_listing(
            raw_product_listing=raw_product_listing,
            raw_products=raw_products,
        )

        expectation = Listing(
            id="lAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP2",
            name="product-id",
            marketplace="canonical-ua",
            product=None,
            price=1000,
            currency="USD",
            status="active",
            trial_days=20,
            period=None,
        )

        self.assertIsInstance(parsed_listing, Listing)
        self.assertEqual(to_dict(expectation), to_dict(parsed_listing))
Exemplo n.º 21
0
def get_account_users():
    g.api.set_convert_response(True)

    try:
        account = g.api.get_purchase_account()
    except UAContractsUserHasNoAccount as error:
        # if no account throw 404
        raise UAContractsAPIError(error)

    account_users = g.api.get_account_users(account_id=account.id)

    return flask.jsonify({
        "account_id": account.id,
        "name": account.name,
        "users": to_dict(account_users),
    })