diff --git a/platform/identity/bundle.json b/platform/identity/bundle.json index ab91472105..9b3e1eac2b 100644 --- a/platform/identity/bundle.json +++ b/platform/identity/bundle.json @@ -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" + } + ] + } ] } } diff --git a/platform/identity/src/IdentityProvider.js b/platform/identity/src/IdentityProvider.js new file mode 100644 index 0000000000..5acb4a2c97 --- /dev/null +++ b/platform/identity/src/IdentityProvider.js @@ -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; + } +); diff --git a/platform/identity/test/IdentityProviderSpec.js b/platform/identity/test/IdentityProviderSpec.js new file mode 100644 index 0000000000..85867642a8 --- /dev/null +++ b/platform/identity/test/IdentityProviderSpec.js @@ -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) + }); + }); + }); + + }); + } +); diff --git a/platform/identity/test/suite.json b/platform/identity/test/suite.json index f7d94d4ec7..15fe7e4caa 100644 --- a/platform/identity/test/suite.json +++ b/platform/identity/test/suite.json @@ -1,5 +1,6 @@ [ "IdentityAggregator", "IdentityCreationDecorator", - "IdentityIndicator" + "IdentityIndicator", + "IdentityProvider" ]