|
@@ -208,4 +208,242 @@ describe('App.Router', function () {
|
|
|
expect(router.get('preferedPath')).to.be.null;
|
|
|
});
|
|
|
});
|
|
|
+
|
|
|
+ describe("#loginGetClustersSuccessCallback()", function () {
|
|
|
+ var mock = {dataLoading: Em.K};
|
|
|
+ beforeEach(function () {
|
|
|
+ sinon.stub(router, 'setClusterInstalled');
|
|
|
+ sinon.stub(router, 'transitionToApp');
|
|
|
+ sinon.stub(router, 'transitionToViews');
|
|
|
+ sinon.stub(router, 'transitionToAdminView');
|
|
|
+ sinon.stub(App.router, 'get').returns(mock);
|
|
|
+ sinon.spy(mock, 'dataLoading');
|
|
|
+ App.setProperties({
|
|
|
+ isAdmin: false,
|
|
|
+ isOperator: false,
|
|
|
+ isPermissionDataLoaded: false
|
|
|
+ });
|
|
|
+ });
|
|
|
+ afterEach(function () {
|
|
|
+ router.setClusterInstalled.restore();
|
|
|
+ router.transitionToApp.restore();
|
|
|
+ router.transitionToViews.restore();
|
|
|
+ router.transitionToAdminView.restore();
|
|
|
+ App.router.get.restore();
|
|
|
+ mock.dataLoading.restore();
|
|
|
+ });
|
|
|
+ it("cluster exists, OPERATOR privileges", function () {
|
|
|
+ var clusterData = {
|
|
|
+ items: [{
|
|
|
+ Clusters: {
|
|
|
+ cluster_name: 'c1'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ };
|
|
|
+ var params = {
|
|
|
+ loginData: {
|
|
|
+ privileges: [{
|
|
|
+ PrivilegeInfo: {
|
|
|
+ cluster_name: 'c1',
|
|
|
+ permission_name: 'CLUSTER.OPERATE'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ router.loginGetClustersSuccessCallback(clusterData, {}, params);
|
|
|
+ expect(router.setClusterInstalled.calledWith(clusterData)).to.be.true;
|
|
|
+ expect(router.transitionToApp.calledOnce).to.be.true;
|
|
|
+ expect(App.get('isAdmin')).to.be.true;
|
|
|
+ expect(App.get('isOperator')).to.be.true;
|
|
|
+ expect(App.get('isPermissionDataLoaded')).to.be.true;
|
|
|
+ expect(mock.dataLoading.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ it("cluster exists, READ privileges", function () {
|
|
|
+ var clusterData = {
|
|
|
+ items: [{
|
|
|
+ Clusters: {
|
|
|
+ cluster_name: 'c1'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ };
|
|
|
+ var params = {
|
|
|
+ loginData: {
|
|
|
+ privileges: [{
|
|
|
+ PrivilegeInfo: {
|
|
|
+ cluster_name: 'c1',
|
|
|
+ permission_name: 'CLUSTER.READ'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ router.loginGetClustersSuccessCallback(clusterData, {}, params);
|
|
|
+ expect(router.setClusterInstalled.calledWith(clusterData)).to.be.true;
|
|
|
+ expect(router.transitionToApp.calledOnce).to.be.true;
|
|
|
+ expect(App.get('isAdmin')).to.be.false;
|
|
|
+ expect(App.get('isOperator')).to.be.false;
|
|
|
+ expect(App.get('isPermissionDataLoaded')).to.be.true;
|
|
|
+ expect(mock.dataLoading.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ it("cluster exists, ADMIN privileges", function () {
|
|
|
+ var clusterData = {
|
|
|
+ items: [{
|
|
|
+ Clusters: {
|
|
|
+ cluster_name: 'c1'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ };
|
|
|
+ var params = {
|
|
|
+ loginData: {
|
|
|
+ privileges: [{
|
|
|
+ PrivilegeInfo: {
|
|
|
+ cluster_name: 'c1',
|
|
|
+ permission_name: 'AMBARI.ADMIN'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ router.loginGetClustersSuccessCallback(clusterData, {}, params);
|
|
|
+ expect(router.setClusterInstalled.calledWith(clusterData)).to.be.true;
|
|
|
+ expect(router.transitionToApp.calledOnce).to.be.true;
|
|
|
+ expect(App.get('isAdmin')).to.be.true;
|
|
|
+ expect(App.get('isOperator')).to.be.false;
|
|
|
+ expect(App.get('isPermissionDataLoaded')).to.be.true;
|
|
|
+ expect(mock.dataLoading.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ it("cluster exists, no privileges", function () {
|
|
|
+ var clusterData = {
|
|
|
+ items: [{
|
|
|
+ Clusters: {
|
|
|
+ cluster_name: 'c1'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ };
|
|
|
+ var params = {
|
|
|
+ loginData: {
|
|
|
+ privileges: []
|
|
|
+ }
|
|
|
+ };
|
|
|
+ router.loginGetClustersSuccessCallback(clusterData, {}, params);
|
|
|
+ expect(router.setClusterInstalled.calledWith(clusterData)).to.be.true;
|
|
|
+ expect(router.transitionToViews.calledOnce).to.be.true;
|
|
|
+ expect(App.get('isAdmin')).to.be.false;
|
|
|
+ expect(App.get('isOperator')).to.be.false;
|
|
|
+ expect(App.get('isPermissionDataLoaded')).to.be.true;
|
|
|
+ expect(mock.dataLoading.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ it("cluster not installed, ADMIN privileges", function () {
|
|
|
+ var clusterData = {
|
|
|
+ items: []
|
|
|
+ };
|
|
|
+ var params = {
|
|
|
+ loginData: {
|
|
|
+ privileges: [{
|
|
|
+ PrivilegeInfo: {
|
|
|
+ cluster_name: 'c1',
|
|
|
+ permission_name: 'AMBARI.ADMIN'
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ router.loginGetClustersSuccessCallback(clusterData, {}, params);
|
|
|
+ expect(router.transitionToAdminView.calledOnce).to.be.true;
|
|
|
+ expect(App.get('isAdmin')).to.be.true;
|
|
|
+ expect(App.get('isOperator')).to.be.false;
|
|
|
+ expect(App.get('isPermissionDataLoaded')).to.be.true;
|
|
|
+ expect(mock.dataLoading.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ it("cluster not installed, non-admin privileges", function () {
|
|
|
+ var clusterData = {
|
|
|
+ items: []
|
|
|
+ };
|
|
|
+ var params = {
|
|
|
+ loginData: {
|
|
|
+ privileges: []
|
|
|
+ }
|
|
|
+ };
|
|
|
+ router.loginGetClustersSuccessCallback(clusterData, {}, params);
|
|
|
+ expect(router.transitionToViews.calledOnce).to.be.true;
|
|
|
+ expect(App.get('isAdmin')).to.be.false;
|
|
|
+ expect(App.get('isOperator')).to.be.false;
|
|
|
+ expect(App.get('isPermissionDataLoaded')).to.be.true;
|
|
|
+ expect(mock.dataLoading.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe("#transitionToAdminView()", function () {
|
|
|
+ beforeEach(function () {
|
|
|
+ sinon.stub(App.ajax, 'send');
|
|
|
+ });
|
|
|
+ afterEach(function () {
|
|
|
+ App.ajax.send.restore();
|
|
|
+ });
|
|
|
+ it("", function () {
|
|
|
+ router.transitionToAdminView();
|
|
|
+ expect(App.ajax.send.calledWith({
|
|
|
+ name: 'ambari.service.load_server_version',
|
|
|
+ sender: router,
|
|
|
+ success: 'adminViewInfoSuccessCallback',
|
|
|
+ error: 'adminViewInfoErrorCallback'
|
|
|
+ })).to.be.true;
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe("#transitionToApp()", function () {
|
|
|
+ beforeEach(function () {
|
|
|
+ this.mock = sinon.stub(router, 'restorePreferedPath');
|
|
|
+ sinon.stub(router, 'getSection', function (callback) {
|
|
|
+ callback('route');
|
|
|
+ });
|
|
|
+ sinon.stub(router, 'transitionTo');
|
|
|
+ });
|
|
|
+ afterEach(function () {
|
|
|
+ this.mock.restore();
|
|
|
+ router.getSection.restore();
|
|
|
+ router.transitionTo.restore();
|
|
|
+ });
|
|
|
+ it("has restore path", function () {
|
|
|
+ this.mock.returns(true);
|
|
|
+ router.transitionToApp();
|
|
|
+ expect(router.getSection.called).to.be.false;
|
|
|
+ expect(router.transitionTo.called).to.be.false;
|
|
|
+ });
|
|
|
+ it("does not have restore path", function () {
|
|
|
+ this.mock.returns(false);
|
|
|
+ router.transitionToApp();
|
|
|
+ expect(router.getSection.calledOnce).to.be.true;
|
|
|
+ expect(router.transitionTo.calledWith('route')).to.be.true;
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe("#transitionToViews()", function () {
|
|
|
+ var mock = {loadAmbariViews: Em.K};
|
|
|
+ beforeEach(function () {
|
|
|
+ sinon.stub(App.router, 'get').returns(mock);
|
|
|
+ sinon.stub(router, 'transitionTo');
|
|
|
+ sinon.spy(mock, 'loadAmbariViews');
|
|
|
+ });
|
|
|
+ afterEach(function () {
|
|
|
+ App.router.get.restore();
|
|
|
+ router.transitionTo.restore();
|
|
|
+ mock.loadAmbariViews.restore();
|
|
|
+ });
|
|
|
+ it("", function () {
|
|
|
+ router.transitionToViews();
|
|
|
+ expect(mock.loadAmbariViews.calledOnce).to.be.true;
|
|
|
+ expect(router.transitionTo.calledWith('main.views.index')).to.be.true;
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe("#adminViewInfoErrorCallback()", function () {
|
|
|
+ beforeEach(function () {
|
|
|
+ sinon.stub(router, 'transitionToViews');
|
|
|
+ });
|
|
|
+ afterEach(function () {
|
|
|
+ router.transitionToViews.restore();
|
|
|
+ });
|
|
|
+ it("", function () {
|
|
|
+ router.adminViewInfoErrorCallback();
|
|
|
+ expect(router.transitionToViews.calledOnce).to.be.true;
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|