[Identity] Add default identity provider

nasa/openmctweb#92
This commit is contained in:
Victor Woeltjen 2015-09-01 11:43:07 -07:00
parent c3efb29dfc
commit 7562c82369
4 changed files with 138 additions and 2 deletions

View File

@ -7,10 +7,17 @@
"provides": "identityService",
"depends": [ "$q" ]
},
{
"implementation": "IdentityProvider.js",
"type": "provider",
"provides": "identityService",
"depends": [ "$q" ],
"priority": "fallback"
},
{
"type": "decorator",
"provides": "creationService",
"implementation": "services/IdentityCreationDecorator.js",
"implementation": "IdentityCreationDecorator.js",
"depends": [ "identityService" ]
}
],
@ -19,6 +26,16 @@
"implementation": "IdentityIndicator.js",
"depends": [ "identityService" ]
}
],
"types": [
{
"properties": [
{
"key": "creator",
"name": "Creator"
}
]
}
]
}
}

View File

@ -0,0 +1,55 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is 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.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
/**
* Defines interfaces and common infrastructure for establishing
* a user's identity.
* @namespace platform/identity
*/
define(
function () {
"use strict";
var UNKNOWN_USER = {
key: "unknown",
name: "Unknown User"
};
/**
* Default implementation of an identity service. Provides an
* unkown user.
* @constructor
* @implements {IdentityService}
* @memberof platform/identity
*/
function IdentityProvider($q) {
this.userPromise = $q.when(UNKNOWN_USER);
}
IdentityProvider.prototype.getUser = function () {
return this.userPromise;
};
return IdentityProvider;
}
);

View File

@ -0,0 +1,63 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is 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.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,describe,beforeEach,it,jasmine,expect,Promise,waitsFor,runs */
define(
[
'../src/IdentityProvider'
],
function (IdentityProvider) {
"use strict";
describe("IdentityProvider", function () {
var mockQ, mockCallback, provider;
function calledBack() {
return mockCallback.calls.length > 0;
}
beforeEach(function () {
mockCallback = jasmine.createSpy('callback');
mockQ = jasmine.createSpyObj('$q', ['when']);
mockQ.when.andCallFake(function (v) {
return Promise.resolve(v);
});
provider = new IdentityProvider(mockQ);
});
it("provides an unknown user", function () {
provider.getUser().then(mockCallback);
waitsFor(calledBack);
runs(function () {
expect(mockCallback).toHaveBeenCalledWith({
key: jasmine.any(String),
name: jasmine.any(String)
});
});
});
});
}
);

View File

@ -1,5 +1,6 @@
[
"IdentityAggregator",
"IdentityCreationDecorator",
"IdentityIndicator"
"IdentityIndicator",
"IdentityProvider"
]