Example #1
0
    def test_update_account_details_address(self):
        task = Task.objects.create(ip_address="0.0.0.0", keystone_user={})

        data = {
            'project_id': self.project.id,
            'name': 'Cloud Company',
            'address_1': "123 Street Street",
            'address_2': '',
            'postal_code': 12342,
            'city': 'Blasphemy',
            'country': 'NZ',
        }

        action = UpdateAccountDetailsAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)

        odooclient = get_odoo_client()
        search = [('is_company', '=', True), ('name', '=', 'Cloud Company')]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].country_id.code, 'NZ')
        self.assertEquals(partners[0].property_account_position, False)
        self.assertEquals(partners[0].street, '123 Street Street')

        self.assertIn("Partner address has changed. Prior address was:",
                      partners[0].message_ids[0].body)

        action.submit({})
        self.assertEquals(action.valid, True)
Example #2
0
    def test_update_account_details_address_country(self):
        task = Task.objects.create(ip_address="0.0.0.0", keystone_user={})

        data = {
            'project_id': self.project.id,
            'name': 'Cloud Company',
            'address_1': "123 Street Street",
            'address_2': '',
            'postal_code': 12342,
            'city': 'Blasphemy',
            'country': 'SH',
        }

        action = UpdateAccountDetailsAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)
        # This action should not allow auto approval:
        self.assertEquals(action.auto_approve, False)

        # Now we approve it anyway
        action.post_approve()
        self.assertEquals(action.valid, True)

        odooclient = get_odoo_client()
        search = [('is_company', '=', True), ('name', '=', 'Cloud Company')]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].country_id.code, 'SH')
        self.assertEquals(partners[0].property_account_position, 1)
        self.assertEquals(partners[0].street, '123 Street Street')

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_customer_individual_false_duplicate(self):
        """
        Test individual.
        Existing customer with 'contact' that matches name.

        Should not flag non_company contact as a possible match.

        Should create 2 partner.
        """

        odooclient = get_odoo_client()
        existing_company_id = odooclient.partners.create(name="test company",
                                                         is_company=True)
        odooclient.partners.create(name="jim james",
                                   parent_id=existing_company_id)

        task = Task.objects.create(ip_address="0.0.0.0", keystone_user={})

        data = {
            'signup_type': 'individual',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'stripe_token': '',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'bill_address_1': 'yellow brick road',
            'bill_address_2': '',
            'bill_city': 'emerald city',
            'bill_postal_code': 'NW1',
            'bill_country': 'NZ',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)
        self.assertNotIn("(POSSIBLE DUPLICATE)", action.customer_name)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 4)

        search = [('is_company', '=', True), ('name', '=', data['name'])]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['name'])
        self.assertEquals(partners[0].country_id.id, 3)
        self.assertEquals(partners[0].property_account_position, None)

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_customer_individual_fiscal_position(self):
        """
        Test individual.
        No existing customer.

        Should create 1 partner.

        Fiscal position is set because not in NZ.
        """
        task = Task.objects.create(
            ip_address="0.0.0.0",
            keystone_user={})

        data = {
            'signup_type': 'individual',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'credit_card',
            'stripe_token': 'some_credit_token',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'bill_address_1': 'yellow brick road',
            'bill_address_2': '',
            'bill_city': 'emerald city',
            'bill_postal_code': 'NW1',
            'bill_country': 'AU',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 1)

        odooclient = get_odoo_client()
        search = [
            ('is_company', '=', False),
            ('name', '=', data['name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['name'])
        self.assertEquals(partners[0].country_id, 4)
        self.assertEquals(partners[0].property_account_position, 1)

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_customer_individual_fiscal_position(self):
        """
        Test individual.
        No existing customer.

        Should create 2 partners.

        Fiscal position is set because not in NZ.
        """
        task = Task.objects.create(ip_address="0.0.0.0", keystone_user={})

        data = {
            'signup_type': 'individual',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'stripe_token': '',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'bill_address_1': 'yellow brick road',
            'bill_address_2': '',
            'bill_city': 'emerald city',
            'bill_postal_code': 'NW1',
            'bill_country': 'AU',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 2)

        odooclient = get_odoo_client()
        search = [('is_company', '=', True), ('name', '=', data['name'])]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['name'])
        self.assertEquals(partners[0].country_id.id, 4)
        self.assertEquals(partners[0].property_account_position, 1)

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_customer(self):
        """
        Test the default case, all valid.
        No existing customer. Primary is billing.

        Should create two partners.

        Country NZ, so no fiscal position.
        """
        task = Task.objects.create(
            ip_address="0.0.0.0",
            keystone_user={})

        data = {
            'signup_type': 'organisation',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'stripe_token': '',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'company_name': 'Jim-co',
            'address_1': "a street",
            'address_2': "",
            'city': 'some city',
            'postal_code': 'NW1',
            'country': 'NZ',
            'primary_contact_is_billing': True,
            'bill_name': '',
            'bill_email': '',
            'bill_phone': '',
            'primary_address_is_billing': True,
            'bill_address_1': '',
            'bill_address_2': '',
            'bill_city': '',
            'bill_postal_code': '',
            'bill_country': '',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 2)

        odooclient = get_odoo_client()
        search = [
            ('is_company', '=', True),
            ('name', '=', data['company_name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['company_name'])
        self.assertEquals(partners[0].property_account_position, None)

        search = [
            ('is_company', '=', False),
            ('name', '=', data['name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['name'])

        search = [
            ('is_company', '=', False),
            ('name', '=', DEFAULT_PHYSICAL_ADDRESS_CONTACT_NAME)
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 0)

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_customer_duplicate(self):
        """
        Test the duplicate case, all valid.
        Existing customer. Primary is billing.

        Should create two partners, the company with
        "POSSIBLE DUPLICATE" in the name.
        """

        # First we will use another test to setup
        # an existing customer.
        self.test_new_customer()

        task = Task.objects.create(
            ip_address="0.0.0.0",
            keystone_user={})

        data = {
            'signup_type': 'organisation',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'stripe_token': '',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'company_name': 'Jim-co',
            'address_1': "a street",
            'address_2': "",
            'city': 'some city',
            'postal_code': 'NW1',
            'country': 'NZ',
            'primary_contact_is_billing': True,
            'bill_name': '',
            'bill_email': '',
            'bill_phone': '',
            'primary_address_is_billing': True,
            'bill_address_1': '',
            'bill_address_2': '',
            'bill_city': '',
            'bill_postal_code': '',
            'bill_country': '',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 4)

        odooclient = get_odoo_client()
        search = [
            ('is_company', '=', True),
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 2)
        self.assertTrue(
            '(POSSIBLE DUPLICATE)' in partners[0].name or
            '(POSSIBLE DUPLICATE)' in partners[1].name)

        search = [
            ('is_company', '=', False),
            ('name', '=', data['name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 2)
        self.assertEquals(partners[0].name, data['name'])
        self.assertEquals(partners[1].name, data['name'])

        search = [
            ('is_company', '=', False),
            ('name', '=', DEFAULT_PHYSICAL_ADDRESS_CONTACT_NAME)
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 0)

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_signup(self):
        """
        Ensure the new signup workflow goes as expected.
        """
        setup_identity_cache()

        url = "/v1/openstack/sign-up"

        signup_data = {
            'signup_type': 'organisation',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'toc_agreed': 'true',
            'company_name': 'Jim-co',
            'address_1': "a street",
            'city': 'some city',
            'postal_code': 'NW1',
            'country': 'NZ',
        }
        response = self.client.post(url, signup_data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        headers = {
            'project_name': "test_project",
            'project_id': "test_project_id",
            'roles': "admin,_member_",
            'username': "******",
            'user_id': "test_user_id",
            'authenticated': True,
        }
        new_task = Task.objects.all()[0]
        url = "/v1/tasks/" + new_task.uuid
        data = {"approved": True}
        response = self.client.post(url, data, format='json',
                                    headers=headers)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(
            response.data,
            {'notes': ['created token']}
        )

        self.assertEquals(len(odoo_cache['partners']), 2)

        odooclient = get_odoo_client()
        search = [
            ('is_company', '=', True),
            ('name', '=', signup_data['company_name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, signup_data['company_name'])

        search = [
            ('is_company', '=', False),
            ('name', '=', signup_data['name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, signup_data['name'])

        search = [
            ('is_company', '=', False),
            ('name', '=', DEFAULT_PHYSICAL_ADDRESS_CONTACT_NAME)
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 0)

        self.assertEquals(len(odoo_cache['projects']), 1)
        self.assertEquals(len(odoo_cache['project_rels']), 3)
        self.assertEquals(len(odoo_cache['credits']), 1)

        self.assertEquals(
            list(odoo_cache['credits'].values())[0]['current_balance'], 300.00)

        new_token = Token.objects.all()[0]
        url = "/v1/tokens/" + new_token.token
        data = {'password': '******'}
        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Example #9
0
    def test_new_signup(self):
        """
        Ensure the new signup workflow goes as expected.
        """
        setup_identity_cache()

        url = "/v1/openstack/sign-up"

        signup_data = {
            'signup_type': 'organisation',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'toc_agreed': 'true',
            'company_name': 'Jim-co',
            'address_1': "a street",
            'city': 'some city',
            'postal_code': 'NW1',
            'country': 'NZ',
        }
        response = self.client.post(url, signup_data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        headers = {
            'project_name': "test_project",
            'project_id': "test_project_id",
            'roles': "admin,_member_",
            'username': "******",
            'user_id': "test_user_id",
            'authenticated': True,
        }
        new_task = Task.objects.all()[0]
        url = "/v1/tasks/" + new_task.uuid
        data = {"approved": True}
        response = self.client.post(url, data, format='json',
                                    headers=headers)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(
            response.data,
            {'notes': ['created token']}
        )

        self.assertEquals(len(odoo_cache['partners']), 2)

        odooclient = get_odoo_client()
        search = [
            ('is_company', '=', True),
            ('name', '=', signup_data['company_name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, signup_data['company_name'])

        search = [
            ('is_company', '=', False),
            ('name', '=', signup_data['name'])
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, signup_data['name'])

        search = [
            ('is_company', '=', False),
            ('name', '=', DEFAULT_PHYSICAL_ADDRESS_CONTACT_NAME)
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 0)

        self.assertEquals(len(odoo_cache['projects']), 1)
        self.assertEquals(len(odoo_cache['project_rels']), 3)

        new_token = Token.objects.all()[0]
        url = "/v1/tokens/" + new_token.token
        data = {'password': '******'}
        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
    def test_new_customer(self):
        """
        Test the default case, all valid.
        No existing customer. Primary is billing.

        Should create two partners.

        Country NZ, so no fiscal position.
        """
        task = Task.objects.create(ip_address="0.0.0.0", keystone_user={})

        data = {
            'signup_type': 'organisation',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'stripe_token': '',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'company_name': 'Jim-co',
            'address_1': "a street",
            'address_2': "",
            'city': 'some city',
            'postal_code': 'NW1',
            'country': 'NZ',
            'primary_contact_is_billing': True,
            'bill_name': '',
            'bill_email': '',
            'bill_phone': '',
            'primary_address_is_billing': True,
            'bill_address_1': '',
            'bill_address_2': '',
            'bill_city': '',
            'bill_postal_code': '',
            'bill_country': '',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 2)

        odooclient = get_odoo_client()
        search = [('is_company', '=', True),
                  ('name', '=', data['company_name'])]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['company_name'])
        self.assertEquals(partners[0].property_account_position, None)

        search = [('is_company', '=', False), ('name', '=', data['name'])]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 1)
        self.assertEquals(partners[0].name, data['name'])

        search = [('is_company', '=', False),
                  ('name', '=', DEFAULT_PHYSICAL_ADDRESS_CONTACT_NAME)]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 0)

        action.submit({})
        self.assertEquals(action.valid, True)
    def test_new_customer_duplicate(self):
        """
        Test the duplicate case, all valid.
        Existing customer. Primary is billing.

        Should create two partners, the company with
        "POSSIBLE DUPLICATE" in the name.
        """

        # First we will use another test to setup
        # an existing customer.
        self.test_new_customer()

        task = Task.objects.create(ip_address="0.0.0.0", keystone_user={})

        data = {
            'signup_type': 'organisation',
            'name': 'jim james',
            'email': '*****@*****.**',
            'phone': '123456',
            'payment_method': 'invoice',
            'stripe_token': '',
            'toc_agreed': 'true',
            'news_agreed': 'true',
            'company_name': 'Jim-co',
            'address_1': "a street",
            'address_2': "",
            'city': 'some city',
            'postal_code': 'NW1',
            'country': 'NZ',
            'primary_contact_is_billing': True,
            'bill_name': '',
            'bill_email': '',
            'bill_phone': '',
            'primary_address_is_billing': True,
            'bill_address_1': '',
            'bill_address_2': '',
            'bill_city': '',
            'bill_postal_code': '',
            'bill_country': '',
            'discount_code': '',
        }

        action = NewClientSignUpAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(len(odoo_cache['partners']), 4)

        odooclient = get_odoo_client()
        search = [
            ('is_company', '=', True),
        ]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 2)
        self.assertTrue('(POSSIBLE DUPLICATE)' in partners[0].name
                        or '(POSSIBLE DUPLICATE)' in partners[1].name)

        search = [('is_company', '=', False), ('name', '=', data['name'])]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 2)
        self.assertEquals(partners[0].name, data['name'])
        self.assertEquals(partners[1].name, data['name'])

        search = [('is_company', '=', False),
                  ('name', '=', DEFAULT_PHYSICAL_ADDRESS_CONTACT_NAME)]
        partners = odooclient.partners.list(search)
        self.assertEquals(len(partners), 0)

        action.submit({})
        self.assertEquals(action.valid, True)