Skip to content

Commit

Permalink
Merge pull request #73 from TAMULib/product-sprint6-95
Browse files Browse the repository at this point in the history
Issue 95: username/password for GitHub should be removed - no longer available
  • Loading branch information
kaladay committed Sep 14, 2020
2 parents b5d514f + a258c7e commit 2674e50
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 44 deletions.
57 changes: 45 additions & 12 deletions app/directives/remoteProjectManagerFormDirective.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,59 @@ app.directive('remoteProjectManagerForm', function () {
restrict: 'E',
replace: false,
scope: {
'managementType': '<',
'managementSettings': '=',
'model': '='
},
link: function ($scope) {

$scope.auth = {
useToken: false,
required: false
};

var originalType;

var isAuthRequired = function () {
$scope.auth.useToken = false;
$scope.auth.required = false;

for (var i in $scope.managementSettings) {
var key = $scope.managementSettings[i].key;
if (key === 'password' || key === 'token') {
return true;
if (key === 'password') {
$scope.auth.required = true;
}
}
};

var hasToken = function () {
for (var key in $scope.model.settings) {
var value = $scope.model.settings[key];
if (key === 'token' && value !== undefined && value.length > 0) {
return true;
if (key === 'token') {
$scope.auth.useToken = true;
}
}
};

$scope.auth = {
useToken: hasToken(),
required: isAuthRequired()
var refreshAuth = function () {
if (originalType === undefined || originalType == $scope.managementType) {
if (originalType === undefined) {
isAuthRequired();

originalType = $scope.managementType;
}

if ($scope.auth.required) {
$scope.auth.useToken = false;

for (var key in $scope.model.settings) {
var value = $scope.model.settings[key];

if (key === 'token' && value != undefined && value.length > 0) {
$scope.auth.useToken = true;
}
}
}
} else {
isAuthRequired();

originalType = $scope.managementType;
}
};

$scope.inputSetting = function (setting) {
Expand All @@ -53,6 +80,12 @@ app.directive('remoteProjectManagerForm', function () {
}
}
};

refreshAuth();

$scope.$watch('managementType', function() {
refreshAuth();
});
}
};
});
2 changes: 1 addition & 1 deletion app/views/modals/editRemoteProjectManagerModal.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ <h4 class="modal-title">Edit Remote Project Manager</h4>

<validatedselect id="edit-type" options="serviceTypes" optionvalue="value" optionproperty="gloss" model="remoteProjectManagerToEdit" property="type" label="Type" form="remoteProjectManagerForms.edit" validations="remoteProjectManagerForms.validations" results="remoteProjectManagerForms.getResults()"></validatedselect>

<remote-project-manager-form ng-if="remoteProjectManagerToEdit.type" management-settings="typeSettings(remoteProjectManagerToEdit.type)" model="remoteProjectManagerToEdit"></remote-project-manager-form>
<remote-project-manager-form ng-if="remoteProjectManagerToEdit.type" management-type="remoteProjectManagerToEdit.type" management-settings="typeSettings(remoteProjectManagerToEdit.type)" model="remoteProjectManagerToEdit"></remote-project-manager-form>
</div>

<div class="modal-footer">
Expand Down
98 changes: 67 additions & 31 deletions tests/unit/directives/remoteProjectManagerFormDirectiveTest.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,58 @@
describe("directive: remoteProjectManagerForm", function () {
var $compile, $q, $scope, directive, element, formSettings, formModel;
var $compile, $q, $scope, directive, element;

var initializeVariables = function () {
inject(function (_$q_, _$compile_) {
$q = _$q_;
$compile = _$compile_;

formModel = {
name: "",
type: ""
};

formSettings = [{
type: "text",
key: "url",
gloss: "URL",
visible: true
}, {
type: "text",
key: "username",
gloss: "Username",
visible: false
}, {
type: "password",
key: "password",
gloss: "Password",
visible: false
}, {
type: "password",
key: "token",
gloss: "Token",
visible: false
}];
});
};

var initializeDirective = function (settings) {
inject(function (_$rootScope_) {
$scope = _$rootScope_.$new();

var attr = settings && settings.attr ? settings.attr : "management-settings='settings' model='model'></remote-project-manager-form";
var attr = settings && settings.attr ? settings.attr : "management-settings='managementSettings' model='model'></remote-project-manager-form";
var body = settings && settings.body ? settings.body : "";

var managementType = settings && settings.managementType ? settings.managementType : "type";

var managementSettings = settings && settings.managementSettings ? settings.managementSettings : [
{
type: "text",
key: "url",
gloss: "URL",
visible: true
},{
type: "text",
key: "username",
gloss: "Username",
visible: false
}, {
type: "password",
key: "password",
gloss: "Password",
visible: false
}, {
type: "password",
key: "token",
gloss: "Token",
visible: false
}
];

var model = settings && settings.model ? settings.model : {
name: "",
type: "",
settings: {}
};

element = angular.element("<remote-project-manager-form " + attr + ">" + body + "</remote-project-manager-form>");
directive = $compile(element)($scope);

$scope.model = formModel;
$scope.settings = formSettings;
$scope.managementType = managementType;
$scope.managementSettings = managementSettings;
$scope.model = model;

$scope.$digest();
});
Expand All @@ -66,5 +72,35 @@ describe("directive: remoteProjectManagerForm", function () {
initializeDirective();
expect(directive).toBeDefined();
});

it("defined with token auth", function () {
var settings = {
model: {
name: "",
type: "",
settings: {
token: "1234567890"
}
}
};

initializeDirective(settings);
expect(directive).toBeDefined();
});

it("defined with password auth", function () {
var settings = {
model: {
name: "",
type: "",
settings: {
password: "1234567890"
}
}
};

initializeDirective(settings);
expect(directive).toBeDefined();
});
});
});

0 comments on commit 2674e50

Please sign in to comment.