

@mock.patch('glance_store._drivers.swift.store.ks_v3')
@mock.patch('glance_store._drivers.swift.store.ks_session')
@mock.patch('glance_store._drivers.swift.store.ks_client')
def test_init_client_multi_tenant(self, mock_client, mock_session, mock_v3):
    'Test that keystone client was initialized correctly'
    self.config(swift_store_multi_tenant=True)
    store = Store(self.conf)
    store.configure()
    ref_params = sutils.SwiftParams(self.conf).params
    default_ref = self.conf.glance_store.default_swift_reference
    default_swift_reference = ref_params.get(default_ref)
    trustee_session = mock.MagicMock()
    trustor_session = mock.MagicMock()
    main_session = mock.MagicMock()
    trustee_client = mock.MagicMock()
    trustee_client.session.get_user_id.return_value = 'fake_user'
    trustor_client = mock.MagicMock()
    trustor_client.session.auth.get_auth_ref.return_value = {
        'roles': [{
            'name': 'fake_role',
        }],
    }
    trustor_client.trusts.create.return_value = mock.MagicMock(id='fake_trust')
    main_client = mock.MagicMock()
    mock_session.Session.side_effect = [trustor_session, trustee_session, main_session]
    mock_client.Client.side_effect = [trustor_client, trustee_client, main_client]
    ctxt = mock.MagicMock()
    client = store.init_client(location=mock.MagicMock(), context=ctxt)
    mock_v3.Token.assert_called_once_with(auth_url=default_swift_reference.get('auth_address'), token=ctxt.auth_token, project_id=ctxt.tenant)
    mock_session.Session.assert_any_call(auth=mock_v3.Token())
    mock_client.Client.assert_any_call(session=trustor_session)
    (tenant_name, user) = default_swift_reference.get('user').split(':')
    mock_v3.Password.assert_any_call(auth_url=default_swift_reference.get('auth_address'), username=user, password=default_swift_reference.get('key'), project_name=tenant_name, user_domain_id=default_swift_reference.get('user_domain_id'), user_domain_name=default_swift_reference.get('user_domain_name'), project_domain_id=default_swift_reference.get('project_domain_id'), project_domain_name=default_swift_reference.get('project_domain_name'))
    mock_session.Session.assert_any_call(auth=mock_v3.Password())
    mock_client.Client.assert_any_call(session=trustee_session)
    trustor_client.trusts.create.assert_called_once_with(trustee_user='fake_user', trustor_user=ctxt.user, project=ctxt.tenant, impersonation=True, role_names=['fake_role'])
    mock_v3.Password.assert_any_call(auth_url=default_swift_reference.get('auth_address'), username=user, password=default_swift_reference.get('key'), trust_id='fake_trust', user_domain_id=default_swift_reference.get('user_domain_id'), user_domain_name=default_swift_reference.get('user_domain_name'), project_domain_id=default_swift_reference.get('project_domain_id'), project_domain_name=default_swift_reference.get('project_domain_name'))
    mock_client.Client.assert_any_call(session=main_session)
    self.assertEqual(main_client, client)

dataset/ETHPy150Open openstack/glance_store/glance_store/tests/unit/test_swift_store.py SwiftTests.test_init_client_multi_tenant/original