134 lines
5.4 KiB
JavaScript
134 lines
5.4 KiB
JavaScript
/*
|
|
* Copyright 2016 IBM Corp.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
(function() {
|
|
"use strict";
|
|
|
|
describe('Identity user service', function() {
|
|
var service, keystone, policy, scope, settings, $q, detailRoute;
|
|
|
|
beforeEach(module('horizon.dashboard.identity.users'));
|
|
beforeEach(inject(function($injector, _$q_) {
|
|
service = $injector.get('horizon.dashboard.identity.users.service');
|
|
keystone = $injector.get('horizon.app.core.openstack-service-api.keystone');
|
|
policy = $injector.get('horizon.app.core.openstack-service-api.policy');
|
|
settings = $injector.get('horizon.app.core.openstack-service-api.settings');
|
|
detailRoute = $injector.get('horizon.app.core.detailRoute');
|
|
scope = $injector.get('$rootScope').$new();
|
|
$q = _$q_;
|
|
}));
|
|
|
|
it("getDetailsPath creates proper url", function() {
|
|
var item = {id: 614};
|
|
expect(service.getDetailsPath(item)).toBe(detailRoute + 'OS::Keystone::User/614');
|
|
});
|
|
|
|
describe('getUsersPromise', function() {
|
|
|
|
it("provides a promise", function() {
|
|
var deferredGetUser = $q.defer();
|
|
var deferredGetUsers = $q.defer();
|
|
var deferredPolicy = $q.defer();
|
|
spyOn(keystone, 'getUser').and.returnValue(deferredGetUser.promise);
|
|
spyOn(keystone, 'getUsers').and.returnValue(deferredGetUsers.promise);
|
|
spyOn(policy, 'ifAllowed').and.returnValue(deferredPolicy.promise);
|
|
|
|
var result = service.getUsersPromise();
|
|
deferredGetUser.resolve({data: {id: '1', name: 'puff'}});
|
|
deferredGetUsers.resolve({data: {items: [{id: '1234', name: 'test_user1'}]}});
|
|
deferredPolicy.resolve({"allowed": true});
|
|
|
|
scope.$apply();
|
|
expect(keystone.getUsers).toHaveBeenCalled();
|
|
expect(result.$$state.value.data.items[0].name).toBe('test_user1');
|
|
});
|
|
});
|
|
|
|
describe('getUserPromise', function() {
|
|
|
|
it("provides a promise if keystone version undefined", function() {
|
|
var deferredVersion = $q.defer();
|
|
var deferredUser = $q.defer();
|
|
spyOn(keystone, 'getVersion').and.returnValue(deferredVersion.promise);
|
|
spyOn(keystone, 'getUser').and.returnValue(deferredUser.promise);
|
|
|
|
service.getUserPromise(1);
|
|
deferredVersion.resolve({data: {version: ''}});
|
|
deferredUser.resolve({data: {id: '1', name: 'puff'}});
|
|
|
|
scope.$apply();
|
|
expect(keystone.getVersion).toHaveBeenCalled();
|
|
expect(keystone.getUser).toHaveBeenCalled();
|
|
});
|
|
|
|
it("provides a promise if keystone version < 3", function() {
|
|
var deferredVersion = $q.defer();
|
|
var deferredUser = $q.defer();
|
|
spyOn(keystone, 'getVersion').and.returnValue(deferredVersion.promise);
|
|
spyOn(keystone, 'getUser').and.returnValue(deferredUser.promise);
|
|
|
|
service.getUserPromise(1);
|
|
deferredVersion.resolve({data: {version: 2}});
|
|
deferredUser.resolve({data: {id: '1', name: 'puff'}});
|
|
|
|
scope.$apply();
|
|
expect(keystone.getVersion).toHaveBeenCalled();
|
|
expect(keystone.getUser).toHaveBeenCalled();
|
|
});
|
|
|
|
it("provides a promise if keystone version 3", function() {
|
|
var deferredVersion = $q.defer();
|
|
var deferredProject = $q.defer();
|
|
var deferredUser = $q.defer();
|
|
var deferredDomain = $q.defer();
|
|
spyOn(keystone, 'getVersion').and.returnValue(deferredVersion.promise);
|
|
spyOn(keystone, 'getUser').and.returnValue(deferredUser.promise);
|
|
spyOn(keystone, 'getProject').and.returnValue(deferredProject.promise);
|
|
spyOn(keystone, 'getDomain').and.returnValue(deferredDomain.promise);
|
|
|
|
var result = service.getUserPromise(1);
|
|
deferredVersion.resolve({data: {version: 3}});
|
|
deferredUser.resolve({data: {id: '1', name: 'puff', domain_id: 29,
|
|
default_project_id: 26}});
|
|
deferredProject.resolve({data: {name: 'puff_project'}});
|
|
deferredDomain.resolve({data: {id: '1', name: 'puff_domain'}});
|
|
|
|
scope.$apply();
|
|
expect(keystone.getVersion).toHaveBeenCalled();
|
|
expect(keystone.getProject).toHaveBeenCalled();
|
|
expect(keystone.getUser).toHaveBeenCalled();
|
|
expect(keystone.getDomain).toHaveBeenCalled();
|
|
expect(result.$$state.value.data.project_name).toBe('puff_project');
|
|
expect(result.$$state.value.data.domain_name).toBe('puff_domain');
|
|
});
|
|
});
|
|
|
|
describe('getFilterFirstSettingPromise', function() {
|
|
|
|
it('provides the setting value for identitty.users panel', function() {
|
|
var deferredSetting = $q.defer();
|
|
spyOn(settings, 'getSetting').and.returnValue(deferredSetting.promise);
|
|
var result = service.getFilterFirstSettingPromise();
|
|
deferredSetting.resolve({'identity.users': false});
|
|
scope.$apply();
|
|
expect(settings.getSetting).toHaveBeenCalled();
|
|
expect(result.$$state.value).toBe(false);
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
})();
|