allow specify roles with array
add more tests