util.roles: Return nil if the role has no explicit policy (fixes inheritance)
Previously, if the first inherited role had no opinion, it returned false and
prevented further consultation of other inherited roles.
This bug was found thanks to the implementation of missing test cases
identified through mutation testing.
local stanza_t = require "util.stanza".stanza_t
local record lib
record dataform
title : string
instructions : string
record form_field
enum field_type
"boolean"
"fixed"
"hidden"
"jid-multi"
"jid-single"
"list-multi"
"list-single"
"text-multi"
"text-private"
"text-single"
end
type : field_type
var : string -- protocol name
name : string -- internal name
label : string
desc : string
datatype : string
range_min : number
range_max : number
value : any -- depends on field_type
options : table
end
{ form_field }
enum form_type
"form"
"submit"
"cancel"
"result"
end
form : function ( dataform, { string : any }, form_type ) : stanza_t
data : function ( dataform, stanza_t ) : { string : any }
end
new : function ( dataform ) : dataform
end
return lib