集会wsapi权限一致性

时间:2015-02-26 19:12:16

标签: web-services permissions rally consistency

Rally权限是否一致或最终一致?因为我写的许多工作空间和项目权限测试都失败了。他们2个月前过世了。

我所做的是创建工作区权限,然后在拉力赛服务器响应后立即为该权限设置GET,但我得到旧的陈旧数据。

我再次注意:我所有的WSAPI权限测试都在2个月前通过,而且我的代码中没有任何更改,所以我假设WSAPI结束时发生了一些变化。

-

一些额外的信息:我正在使用node-Rally库,我在其上面写了一个瘦的包装库来编辑权限。

此外,这可能无关紧要,但我在创建工作区权限时会收到这些警告,我不明白为什么。我需要指定所有这三个来创建工作区权限!

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.' 
  ],

编辑:代码I使用

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');
};

1 个答案:

答案 0 :(得分:1)

您可以通过消除重复的承诺来简化您的代码。所有restApi方法都已经返回promises(使用Q实现),因此你的setWorkspacePermission可以变为:

rallyUtil.setWorkspacePermission = function(personRef, permission){
    return restApi.create({
        type: 'workspacepermission',
        data: { Workspace: workspaceRef, User:personRef, Role:permission },
        scope: { workspace: workspaceRef }
    });    
};

话虽如此,我不确定还会发生什么。创建的记录是否成功返回?是否可能该权限已经存在,这就是为什么它忽略了新权限?