405 lines
13 KiB
JavaScript
405 lines
13 KiB
JavaScript
/*
|
|
* This file is part of Cockpit.
|
|
*
|
|
* Copyright (C) 2015 Red Hat, Inc.
|
|
*
|
|
* Cockpit is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation; either version 2.1 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Cockpit is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Cockpit; If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
import QUnit from "qunit-tests";
|
|
var angular = require("angular");
|
|
|
|
require("./projects");
|
|
|
|
function suite(fixtures) {
|
|
/* Filled in with a function */
|
|
var inject;
|
|
|
|
var module = angular.module("registry.projects.tests", [
|
|
"kubeClient",
|
|
"registry.projects",
|
|
]);
|
|
|
|
function injectLoadFixtures(fixtures) {
|
|
inject([
|
|
"kubeLoader",
|
|
function(loader, data) {
|
|
loader.reset(true);
|
|
if (fixtures)
|
|
loader.handle(fixtures);
|
|
}
|
|
]);
|
|
}
|
|
|
|
QUnit.test("format Users", function (assert) {
|
|
var done = assert.async();
|
|
assert.expect(4);
|
|
|
|
injectLoadFixtures(fixtures);
|
|
|
|
inject(["projectData", 'kubeSelect', function(projectUtil, select) {
|
|
var user = select().kind("User")
|
|
.name("amanda");
|
|
assert.equal(user.length, 1, "number of users");
|
|
assert.equal(projectUtil.formatMembers(user.one().groups, 'Groups'),
|
|
"finance", "number of groups");
|
|
user = select().kind("User")
|
|
.name("jay");
|
|
assert.equal(projectUtil.formatMembers(user.one().groups, 'Groups'),
|
|
"4 Groups", "number of groups");
|
|
assert.equal(projectUtil.formatMembers(user.one().groups, 'Users'),
|
|
"4 Users", "number of users");
|
|
done();
|
|
}]);
|
|
});
|
|
|
|
QUnit.test("policy checks", function (assert) {
|
|
var done = assert.async();
|
|
assert.expect(11);
|
|
|
|
injectLoadFixtures(fixtures);
|
|
|
|
inject(["projectData", 'kubeSelect', function(projectUtil, select) {
|
|
var user = select().kind("User")
|
|
.name("amanda");
|
|
var policybinding = select().kind("PolicyBinding")
|
|
.namespace("financeprj")
|
|
.name(":default");
|
|
assert.equal(user.length, 1, "number of users");
|
|
assert.equal(policybinding.length, 1, "number of policybinding");
|
|
var rolesArray = projectUtil.getAllRoles("", "");
|
|
assert.equal(rolesArray.length, 0, "no values passed 1 ");
|
|
rolesArray = projectUtil.getAllRoles();
|
|
assert.equal(rolesArray.length, 0, "no values passed 2");
|
|
rolesArray = projectUtil.getAllRoles(user.one(), "financeprj");
|
|
assert.equal(rolesArray.length, 3, "values passed");
|
|
|
|
var regRolesArray = projectUtil.getRegistryRoles(user.one(), "financeprj");
|
|
assert.equal(regRolesArray[0], "Admin", "getRegistryRoles displayRole values");
|
|
regRolesArray = projectUtil.getRegistryRoles("", "");
|
|
assert.equal(regRolesArray.length, 0, "no values passed 3 ");
|
|
regRolesArray = projectUtil.getRegistryRoles();
|
|
assert.equal(regRolesArray.length, 0, "no values passed 4");
|
|
|
|
assert.equal(projectUtil.isRegistryRole(user.one(), "Admin", "financeprj"), true, "check if Admin registry role");
|
|
assert.equal(projectUtil.isRegistryRole("system:unauthenticated", "Pull", "financeprj"), true, "check if Pull registry role");
|
|
assert.equal(projectUtil.isRoles(user.one(), "financeprj"), true, "check if any role exist");
|
|
done();
|
|
}]);
|
|
});
|
|
|
|
angular.module('exceptionOverride', []).factory('$exceptionHandler', function() {
|
|
return function(exception, cause) {
|
|
exception.message += ' (caused by "' + cause + '")';
|
|
throw exception;
|
|
};
|
|
});
|
|
|
|
module.run([
|
|
'$injector',
|
|
function($injector) {
|
|
inject = function inject(func) {
|
|
return $injector.invoke(func);
|
|
};
|
|
QUnit.start();
|
|
}
|
|
]);
|
|
|
|
angular.bootstrap(document, ['registry.projects.tests']);
|
|
}
|
|
|
|
/* Invoke the test suite with this data */
|
|
suite([
|
|
{
|
|
"kind": "User",
|
|
"apiVersion": "v1",
|
|
"metadata": {
|
|
"name": "amanda",
|
|
"selfLink": "/oapi/v1/users/amanda",
|
|
"uid": "8d10b355-b9d4-11e5-b7ad-5254009e00f1",
|
|
"resourceVersion": "1114",
|
|
"creationTimestamp": "2016-01-13T09:03:45Z"
|
|
},
|
|
"identities": [
|
|
"anypassword:abc123"
|
|
],
|
|
"groups": [
|
|
"finance"
|
|
]
|
|
},
|
|
{
|
|
"kind": "User",
|
|
"apiVersion": "v1",
|
|
"metadata": {
|
|
"name": "jay",
|
|
"selfLink": "/oapi/v1/users/jay",
|
|
"uid": "8d10b355-b9d4-11e5-b7ad-5254009e00f1",
|
|
"resourceVersion": "1114",
|
|
"creationTimestamp": "2016-01-13T09:03:45Z"
|
|
},
|
|
"identities": [
|
|
"anypassword:abc123"
|
|
],
|
|
"groups": [
|
|
"finance", "admin", "hr", "dev"
|
|
]
|
|
},
|
|
{
|
|
"kind": "Group",
|
|
"apiVersion": "v1",
|
|
"metadata": {
|
|
"name": "finance",
|
|
"selfLink": "/oapi/v1/groups/finance",
|
|
"uid": "bff4578c-b9d4-11e5-b7ad-5254009e00f1",
|
|
"resourceVersion": "1124",
|
|
"creationTimestamp": "2016-01-13T09:05:10Z"
|
|
},
|
|
"users": [
|
|
"tom",
|
|
"jay",
|
|
"amanda",
|
|
"myadmin"
|
|
]
|
|
},
|
|
{
|
|
"kind": "PolicyBinding",
|
|
"apiVersion": "v1",
|
|
"metadata": {
|
|
"name": ":default",
|
|
"namespace": "financeprj",
|
|
"selfLink": "/oapi/v1/namespaces/financeprj/policybindings/:default",
|
|
"uid": "d5a78dfc-e9e4-11e5-a1bd-3c970eb867f7",
|
|
"resourceVersion": "53908",
|
|
"creationTimestamp": "2016-03-14T13:01:15Z"
|
|
},
|
|
"lastModified": "2016-03-24T07:19:42Z",
|
|
"policyRef": {
|
|
"name": "default"
|
|
},
|
|
"roleBindings": [
|
|
{
|
|
"name": "admin",
|
|
"roleBinding": {
|
|
"metadata": {
|
|
"name": "admin",
|
|
"namespace": "financeprj",
|
|
"uid": "f33cbdd7-ea0e-11e5-ba57-3c970eb867f7",
|
|
"resourceVersion": "24003",
|
|
"creationTimestamp": "2016-03-14T18:02:43Z"
|
|
},
|
|
"userNames": null,
|
|
"groupNames": null,
|
|
"subjects": [
|
|
|
|
],
|
|
"roleRef": {
|
|
"name": "admin"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "edit",
|
|
"roleBinding": {
|
|
"metadata": {
|
|
"name": "edit",
|
|
"namespace": "financeprj",
|
|
"selfLink": "/oapi/v1/namespaces/financeprj/rolebindings/edit",
|
|
"uid": "d5a340e0-e9e4-11e5-a1bd-3c970eb867f7",
|
|
"resourceVersion": "24002",
|
|
"creationTimestamp": "2016-03-14T13:01:15Z"
|
|
},
|
|
"userNames": [
|
|
"amanda"
|
|
],
|
|
"groupNames": null,
|
|
"subjects": [
|
|
{
|
|
"kind": "User",
|
|
"name": "amanda"
|
|
}
|
|
],
|
|
"roleRef": {
|
|
"name": "edit"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "registry-admin",
|
|
"roleBinding": {
|
|
"metadata": {
|
|
"name": "registry-admin",
|
|
"namespace": "financeprj",
|
|
"uid": "c0746786-f0fd-11e5-b5cb-3c970eb867f7",
|
|
"resourceVersion": "24005",
|
|
"creationTimestamp": "2016-03-23T13:47:15Z"
|
|
},
|
|
"userNames": [
|
|
"amanda"
|
|
],
|
|
"groupNames": null,
|
|
"subjects": [
|
|
{
|
|
"kind": "User",
|
|
"name": "amanda"
|
|
}
|
|
],
|
|
"roleRef": {
|
|
"name": "registry-admin"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "registry-editor",
|
|
"roleBinding": {
|
|
"metadata": {
|
|
"name": "registry-editor",
|
|
"namespace": "financeprj",
|
|
"selfLink": "/oapi/v1/namespaces/financeprj/rolebindings/registry-editor",
|
|
"uid": "c613716d-f0fd-11e5-b5cb-3c970eb867f7",
|
|
"resourceVersion": "24339",
|
|
"creationTimestamp": "2016-03-23T13:47:24Z"
|
|
},
|
|
"userNames": [
|
|
"sunny",
|
|
"sam",
|
|
"janet"
|
|
],
|
|
"groupNames": null,
|
|
"subjects": [
|
|
{
|
|
"kind": "User",
|
|
"name": "sunny"
|
|
},
|
|
{
|
|
"kind": "User",
|
|
"name": "sam"
|
|
},
|
|
{
|
|
"kind": "User",
|
|
"name": "janet"
|
|
}
|
|
],
|
|
"roleRef": {
|
|
"name": "registry-editor"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "registry-viewer",
|
|
"roleBinding": {
|
|
"metadata": {
|
|
"name": "registry-viewer",
|
|
"namespace": "financeprj",
|
|
"uid": "de6e0980-f0fd-11e5-b5cb-3c970eb867f7",
|
|
"resourceVersion": "24264",
|
|
"creationTimestamp": "2016-03-23T13:48:05Z"
|
|
},
|
|
"userNames": [
|
|
"janet",
|
|
"sunny"
|
|
],
|
|
"groupNames": null,
|
|
"subjects": [
|
|
{
|
|
"kind": "User",
|
|
"name": "janet"
|
|
},
|
|
{
|
|
"kind": "User",
|
|
"name": "sunny"
|
|
},
|
|
{
|
|
"kind": "SystemGroup",
|
|
"name": "system:unauthenticated"
|
|
}
|
|
],
|
|
"roleRef": {
|
|
"name": "registry-viewer"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "view",
|
|
"roleBinding": {
|
|
"metadata": {
|
|
"name": "view",
|
|
"namespace": "financeprj",
|
|
"uid": "07e34b4c-ea0f-11e5-ba57-3c970eb867f7",
|
|
"resourceVersion": "23860",
|
|
"creationTimestamp": "2016-03-14T18:03:18Z"
|
|
},
|
|
"userNames": null,
|
|
"groupNames": null,
|
|
"subjects": [
|
|
|
|
],
|
|
"roleRef": {
|
|
"name": "view"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"kind": "RoleBinding",
|
|
"apiVersion": "v1",
|
|
"metadata": {
|
|
"name": "registry-admin",
|
|
"namespace": "financeprj",
|
|
"selfLink": "/oapi/v1/namespaces/financeprj/rolebindings/registry-admin",
|
|
"uid": "c0746786-f0fd-11e5-b5cb-3c970eb867f7",
|
|
"resourceVersion": "24005",
|
|
"creationTimestamp": "2016-03-23T13:47:15Z"
|
|
},
|
|
"userNames": [
|
|
"amanda"
|
|
],
|
|
"groupNames": null,
|
|
"subjects": [
|
|
{
|
|
"kind": "User",
|
|
"name": "amanda"
|
|
}
|
|
],
|
|
"roleRef": {
|
|
"name": "registry-admin"
|
|
}
|
|
},
|
|
{
|
|
"kind": "RoleBinding",
|
|
"apiVersion": "v1",
|
|
"metadata": {
|
|
"name": "admin",
|
|
"namespace": "financeprj",
|
|
"selfLink": "/oapi/v1/namespaces/financeprj/rolebindings/admin",
|
|
"uid": "c0746786-f0fd-11e5-b5cb-3c970eb867f7",
|
|
"resourceVersion": "24005",
|
|
"creationTimestamp": "2016-03-23T13:47:15Z"
|
|
},
|
|
"userNames": [
|
|
"amanda"
|
|
],
|
|
"groupNames": null,
|
|
"subjects": [
|
|
{
|
|
"kind": "User",
|
|
"name": "amanda"
|
|
}
|
|
],
|
|
"roleRef": {
|
|
"name": "admin"
|
|
}
|
|
}
|
|
]);
|