拉力wsapi权限一致性
rally wsapi permissions consistency
Rally 权限是一致的还是最终一致的?因为我写的很多工作区和项目权限测试都失败了。他们两个月前就过去了。
我所做的是创建工作区权限,然后在集会服务器响应后立即为该权限设置 GET,但我得到的是旧的、陈旧的数据。
我再次指出:我所有的 WSAPI 权限测试都在 2 个月前通过,并且我没有更改我的代码中的任何内容,所以我假设在 WSAPI 端发生了某些更改。
--
一些额外的信息:我正在使用 node-rally 库,我在其上写了一个薄包装库来编辑权限。
此外,这可能无关紧要,但我在创建工作区权限时收到这些警告,我不明白为什么。我需要指定所有这 3 个来创建工作区权限!
Warnings:
[ 'Ignored JSON element workspacepermission.Workspace during processing of this req... (length: 85)',
'Ignored JSON element workspacepermission.User during processing of this request.',
'Ignored JSON element workspacepermission.Role during processing of this request.'
],
编辑:我正在使用的代码
rallyUtil.getWorkspacePermission = function(personRef){
var deferred = Q.defer();
restApi.query({
type: 'workspacepermission',
limit: Infinity,
fetch: ['Workspace', 'User', 'Role', 'ObjectID', 'UserName', 'Name'],
query: queryUtils.where('User', '=', personRef),
scope: { workspace: workspaceRef }
}, function(error, result) {
if(error) deferred.reject(error);
else deferred.resolve(_.find(result.Results, function(wPermission){ return areSameRefs(wPermission.Workspace._ref, workspaceRef); }));
});
return deferred.promise;
};
rallyUtil.setWorkspacePermission = function(personRef, permission){
var deferred = Q.defer();
restApi.create({
type: 'workspacepermission',
limit: Infinity,
data: { Workspace: workspaceRef, User:personRef, Role:permission },
scope: { workspace: workspaceRef },
}, function(error, result) {
if(error) deferred.reject(error);
else deferred.resolve();
});
return deferred.promise;
};
rallyUtil.setWorkspaceAdmin = function(personRef){
return rallyUtil.setWorkspacePermission(personRef, 'Admin');
};
您可以通过消除重复的承诺来稍微简化您的代码。所有的 restApi 方法已经 return 承诺(使用 Q 实现)所以你的 setWorkspacePermission 可以变成这样:
rallyUtil.setWorkspacePermission = function(personRef, permission){
return restApi.create({
type: 'workspacepermission',
data: { Workspace: workspaceRef, User:personRef, Role:permission },
scope: { workspace: workspaceRef }
});
};
话虽这么说,但我不确定还会发生什么。使用创建的记录是否成功创建 return?是否可能该权限已经存在,这就是它忽略新权限的原因?
Rally 权限是一致的还是最终一致的?因为我写的很多工作区和项目权限测试都失败了。他们两个月前就过去了。
我所做的是创建工作区权限,然后在集会服务器响应后立即为该权限设置 GET,但我得到的是旧的、陈旧的数据。
我再次指出:我所有的 WSAPI 权限测试都在 2 个月前通过,并且我没有更改我的代码中的任何内容,所以我假设在 WSAPI 端发生了某些更改。
--
一些额外的信息:我正在使用 node-rally 库,我在其上写了一个薄包装库来编辑权限。
此外,这可能无关紧要,但我在创建工作区权限时收到这些警告,我不明白为什么。我需要指定所有这 3 个来创建工作区权限!
Warnings:
[ 'Ignored JSON element workspacepermission.Workspace during processing of this req... (length: 85)',
'Ignored JSON element workspacepermission.User during processing of this request.',
'Ignored JSON element workspacepermission.Role during processing of this request.'
],
编辑:我正在使用的代码
rallyUtil.getWorkspacePermission = function(personRef){
var deferred = Q.defer();
restApi.query({
type: 'workspacepermission',
limit: Infinity,
fetch: ['Workspace', 'User', 'Role', 'ObjectID', 'UserName', 'Name'],
query: queryUtils.where('User', '=', personRef),
scope: { workspace: workspaceRef }
}, function(error, result) {
if(error) deferred.reject(error);
else deferred.resolve(_.find(result.Results, function(wPermission){ return areSameRefs(wPermission.Workspace._ref, workspaceRef); }));
});
return deferred.promise;
};
rallyUtil.setWorkspacePermission = function(personRef, permission){
var deferred = Q.defer();
restApi.create({
type: 'workspacepermission',
limit: Infinity,
data: { Workspace: workspaceRef, User:personRef, Role:permission },
scope: { workspace: workspaceRef },
}, function(error, result) {
if(error) deferred.reject(error);
else deferred.resolve();
});
return deferred.promise;
};
rallyUtil.setWorkspaceAdmin = function(personRef){
return rallyUtil.setWorkspacePermission(personRef, 'Admin');
};
您可以通过消除重复的承诺来稍微简化您的代码。所有的 restApi 方法已经 return 承诺(使用 Q 实现)所以你的 setWorkspacePermission 可以变成这样:
rallyUtil.setWorkspacePermission = function(personRef, permission){
return restApi.create({
type: 'workspacepermission',
data: { Workspace: workspaceRef, User:personRef, Role:permission },
scope: { workspace: workspaceRef }
});
};
话虽这么说,但我不确定还会发生什么。使用创建的记录是否成功创建 return?是否可能该权限已经存在,这就是它忽略新权限的原因?