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)
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)
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)