def test_user_profile_by_email_multiple_current(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_MULTIPLE_CURRENT
        email = '*****@*****.**'

        expected = {
            'openstack_id': 1111,
            'user_name': 'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 1378339200
            }, {
                'company_name': 'NTT',
                'end_date': 1442880000
            }, {
                'company_name': 'NTT DATA',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(
            ou.OSID_URI % email, session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_multiple_current(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_MULTIPLE_CURRENT
        email = '*****@*****.**'

        expected = {
            'openstack_id':
            1111,
            'user_name':
            'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 1378339200
            }, {
                'company_name': 'NTT',
                'end_date': 1442880000
            }, {
                'company_name': 'NTT DATA',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(ou.OSID_URI % email,
                                            session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_no_current(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_NO_CURRENT
        email = '*****@*****.**'

        expected = {
            'openstack_id': 5555,
            'user_name': 'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 1193875200
            }, {
                'company_name': 'Mirantis',
                'end_date': 1496188800
            }, {
                'company_name': '*independent',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(
            ou.OSID_URI % email, session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_no_current(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_NO_CURRENT
        email = '*****@*****.**'

        expected = {
            'openstack_id':
            5555,
            'user_name':
            'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 1193875200
            }, {
                'company_name': 'Mirantis',
                'end_date': 1496188800
            }, {
                'company_name': '*independent',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(ou.OSID_URI % email,
                                            session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_not_read(self, reader_mock):
        reader_mock.return_value = None
        email = '*****@*****.**'

        expected = None
        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(
            ou.OSID_URI % email, session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_not_read(self, reader_mock):
        reader_mock.return_value = None
        email = '*****@*****.**'

        expected = None
        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(ou.OSID_URI % email,
                                            session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_no_dates(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_NO_DATES
        email = '*****@*****.**'

        expected = {
            'openstack_id': 2222,
            'user_name': 'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': 'Hewlett Packard Enterprise',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(
            ou.OSID_URI % email, session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_not_affiliated(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_NO_AFFILIATIONS
        email = '*****@*****.**'

        expected = {
            'openstack_id': 5555,
            'user_name': 'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(
            ou.OSID_URI % email, session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_not_affiliated(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_NO_AFFILIATIONS
        email = '*****@*****.**'

        expected = {
            'openstack_id': 5555,
            'user_name': 'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(ou.OSID_URI % email,
                                            session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_no_dates(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_NO_DATES
        email = '*****@*****.**'

        expected = {
            'openstack_id':
            2222,
            'user_name':
            'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': 'Hewlett Packard Enterprise',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(ou.OSID_URI % email,
                                            session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_multiple_records(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_MULTIPLE_RECORDS
        email = '*****@*****.**'

        expected = {
            'openstack_id': 5555,
            'user_name': 'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 1456790400
            }, {
                'company_name': 'Red Hat',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(
            ou.OSID_URI % email, session=ou._openstackid_session)
        self.assertEqual(expected, observed)
    def test_user_profile_by_email_multiple_records(self, reader_mock):
        reader_mock.return_value = USER_PROFILE_MULTIPLE_RECORDS
        email = '*****@*****.**'

        expected = {
            'openstack_id':
            5555,
            'user_name':
            'John Smith',
            'emails': [email],
            'companies': [{
                'company_name': '*independent',
                'end_date': 1456790400
            }, {
                'company_name': 'Red Hat',
                'end_date': 0
            }]
        }

        observed = ou.user_profile_by_email(email)

        reader_mock.assert_called_once_with(ou.OSID_URI % email,
                                            session=ou._openstackid_session)
        self.assertEqual(expected, observed)
Ejemplo n.º 13
0
def main():
    default_data = _read_file('etc/default_data.json')
    users = default_data['users']
    domains_index = get_domains_index(default_data['companies'])

    user_maps = 0
    email_maps_to_openstack_id = 0
    email_does_not_map_to_openstack_id = 0
    users_whos_email_does_not_map = 0
    name_differs = 0
    users_with_companies_match = 0

    recs = []

    for idx, user in enumerate(users):
        name = user['user_name']
        affiliation = flatten_companies(user['companies'])

        print(idx, name, end='')

        ce = []
        umn = 0
        companies_match = True

        for email in user['emails']:
            p = openstackid_utils.user_profile_by_email(email)

            if p:
                mapped_companies = user_processor.resolve_companies_aliases(
                    domains_index, p['companies'])
                email_maps_to_openstack_id += 1

                if p['user_name'] != name:
                    name_differs += 1

                ce.append({email: [p['user_name'],
                                   flatten_companies(mapped_companies)]})

                f = False
                if len(user['companies']) == 1:
                    dd_c = user['companies'][0]['company_name']
                    mc = [c['company_name'] for c in mapped_companies
                          if c['company_name'] != user_processor.INDEPENDENT]
                    if len(mc) == 1:
                        if dd_c == mc[0]:
                            f = True
                companies_match = companies_match and f
            else:
                email_does_not_map_to_openstack_id += 1
                umn += 1

        mark = ''

        if ce:
            recs.append([name, affiliation, ce])
            user_maps += 1
            mark = '+'

        if umn:
            users_whos_email_does_not_map += 1

        if ce and companies_match:
            users_with_companies_match += 1
            mark += '$'

        print('', mark)
        time.sleep(1.1)  # avoid throttling

    recs.sort(key=lambda x: x[0])

    meta = {
        'Default data profiles': len(users),
        'Profiles mapped': user_maps,
        'Profiles NOT mapped': len(users) - user_maps,
        'Profiles with emails NOT mapped': users_whos_email_does_not_map,
        'Emails mapped': email_maps_to_openstack_id,
        'Emails NOT mapped': email_does_not_map_to_openstack_id,
        'Names differ': name_differs,
        'Users with companies MATCH': users_with_companies_match,
    }
    print()
    yaml.safe_dump(meta, sys.stdout, default_flow_style=False)

    with open('profile_mapping.yaml', 'w') as fd:
        yaml.safe_dump(recs, fd, default_flow_style=False)
Ejemplo n.º 14
0
def main():
    default_data = _read_file('etc/default_data.json')
    users = default_data['users']
    domains_index = get_domains_index(default_data['companies'])

    user_maps = 0
    email_maps_to_openstack_id = 0
    email_does_not_map_to_openstack_id = 0
    users_whos_email_does_not_map = 0
    name_differs = 0
    users_with_companies_match = 0

    recs = []

    for idx, user in enumerate(users):
        name = user['user_name']
        affiliation = flatten_companies(user['companies'])

        print(idx, name, end='')

        ce = []
        umn = 0
        companies_match = True

        for email in user['emails']:
            p = openstackid_utils.user_profile_by_email(email)

            if p:
                mapped_companies = user_processor.resolve_companies_aliases(
                    domains_index, p['companies'])
                email_maps_to_openstack_id += 1

                if p['user_name'] != name:
                    name_differs += 1

                ce.append({
                    email:
                    [p['user_name'],
                     flatten_companies(mapped_companies)]
                })

                f = False
                if len(user['companies']) == 1:
                    dd_c = user['companies'][0]['company_name']
                    mc = [
                        c['company_name'] for c in mapped_companies
                        if c['company_name'] != user_processor.INDEPENDENT
                    ]
                    if len(mc) == 1:
                        if dd_c == mc[0]:
                            f = True
                companies_match = companies_match and f
            else:
                email_does_not_map_to_openstack_id += 1
                umn += 1

        mark = ''

        if ce:
            recs.append([name, affiliation, ce])
            user_maps += 1
            mark = '+'

        if umn:
            users_whos_email_does_not_map += 1

        if ce and companies_match:
            users_with_companies_match += 1
            mark += '$'

        print('', mark)
        time.sleep(1.1)  # avoid throttling

    recs.sort(key=lambda x: x[0])

    meta = {
        'Default data profiles': len(users),
        'Profiles mapped': user_maps,
        'Profiles NOT mapped': len(users) - user_maps,
        'Profiles with emails NOT mapped': users_whos_email_does_not_map,
        'Emails mapped': email_maps_to_openstack_id,
        'Emails NOT mapped': email_does_not_map_to_openstack_id,
        'Names differ': name_differs,
        'Users with companies MATCH': users_with_companies_match,
    }
    print()
    yaml.safe_dump(meta, sys.stdout, default_flow_style=False)

    with open('profile_mapping.yaml', 'w') as fd:
        yaml.safe_dump(recs, fd, default_flow_style=False)