diff --git a/data/model/user.py b/data/model/user.py index 104d551bf5..fae3d3a3db 100644 --- a/data/model/user.py +++ b/data/model/user.py @@ -1231,9 +1231,12 @@ def get_public_repo_count(username): ) -def get_active_users(disabled=True, deleted=False): +def get_active_users(disabled=True, deleted=False, include_orgs=False): query = User.select().where(User.organization == False, User.robot == False) + if include_orgs: + query = User.select().where(User.robot == False) + if not disabled: query = query.where(User.enabled == True) else: diff --git a/workers/reconciliationworker.py b/workers/reconciliationworker.py index e631c2c452..5a9846374d 100644 --- a/workers/reconciliationworker.py +++ b/workers/reconciliationworker.py @@ -40,7 +40,7 @@ def _perform_reconciliation(self, user_api, marketplace_api): """ logger.info("Reconciliation worker looking to create new subscriptions...") - users = model.user.get_active_users() + users = model.user.get_active_users(include_orgs=True) stripe_users = [user for user in users if user.stripe_id is not None] diff --git a/workers/test/test_reconciliationworker.py b/workers/test/test_reconciliationworker.py index c64597d845..bbb8d894fd 100644 --- a/workers/test/test_reconciliationworker.py +++ b/workers/test/test_reconciliationworker.py @@ -22,6 +22,18 @@ def test_skip_free_user(initialized_db): mock.assert_not_called() +def test_reconcile_org_user(initialized_db): + user = model.user.get_user("devtable") + + org_user = model.organization.create_organization("org_user", "org_user@test.com", user) + org_user.stripe_id = "cus_" + "".join(random.choices(string.ascii_lowercase, k=14)) + org_user.save() + with patch.object(marketplace_users, "lookup_customer_id") as mock: + worker._perform_reconciliation(marketplace_users, marketplace_subscriptions) + + mock.assert_called_with(org_user.email) + + def test_exception_handling(initialized_db): with patch("data.billing.FakeStripe.Customer.retrieve") as mock: mock.side_effect = stripe.error.InvalidRequestException