(t *testing.T)
| 58 | } |
| 59 | |
| 60 | func TestUserPermission(t *testing.T) { |
| 61 | Convey("nil protect", t, func() { |
| 62 | p := (*UserPermission)(nil) |
| 63 | So(p.HasReadPermission(), ShouldBeFalse) |
| 64 | So(p.HasWritePermission(), ShouldBeFalse) |
| 65 | So(p.HasSuperPermission(), ShouldBeFalse) |
| 66 | So(p.IsValid(), ShouldBeFalse) |
| 67 | _, state := p.HasDisallowedQueryPatterns([]Query{}) |
| 68 | So(state, ShouldBeTrue) |
| 69 | }) |
| 70 | Convey("has read permission", t, func() { |
| 71 | So(UserPermissionFromRole(Void).HasReadPermission(), ShouldBeFalse) |
| 72 | So(UserPermissionFromRole(Read).HasReadPermission(), ShouldBeTrue) |
| 73 | So(UserPermissionFromRole(Write).HasReadPermission(), ShouldBeFalse) |
| 74 | So(UserPermissionFromRole(ReadWrite).HasReadPermission(), ShouldBeTrue) |
| 75 | So(UserPermissionFromRole(Admin).HasReadPermission(), ShouldBeTrue) |
| 76 | }) |
| 77 | Convey("has write permission", t, func() { |
| 78 | So(UserPermissionFromRole(Void).HasWritePermission(), ShouldBeFalse) |
| 79 | So(UserPermissionFromRole(Read).HasWritePermission(), ShouldBeFalse) |
| 80 | So(UserPermissionFromRole(Write).HasWritePermission(), ShouldBeTrue) |
| 81 | So(UserPermissionFromRole(ReadWrite).HasWritePermission(), ShouldBeTrue) |
| 82 | So(UserPermissionFromRole(Admin).HasWritePermission(), ShouldBeTrue) |
| 83 | }) |
| 84 | Convey("has admin permission", t, func() { |
| 85 | So(UserPermissionFromRole(Void).HasSuperPermission(), ShouldBeFalse) |
| 86 | So(UserPermissionFromRole(Read).HasSuperPermission(), ShouldBeFalse) |
| 87 | So(UserPermissionFromRole(Write).HasSuperPermission(), ShouldBeFalse) |
| 88 | So(UserPermissionFromRole(ReadWrite).HasSuperPermission(), ShouldBeFalse) |
| 89 | So(UserPermissionFromRole(Admin).HasSuperPermission(), ShouldBeTrue) |
| 90 | }) |
| 91 | Convey("is valid", t, func() { |
| 92 | So(UserPermissionFromRole(Void).IsValid(), ShouldBeTrue) |
| 93 | So(UserPermissionFromRole(Read).IsValid(), ShouldBeTrue) |
| 94 | So(UserPermissionFromRole(Write).IsValid(), ShouldBeTrue) |
| 95 | So(UserPermissionFromRole(ReadWrite).IsValid(), ShouldBeTrue) |
| 96 | So(UserPermissionFromRole(Admin).IsValid(), ShouldBeTrue) |
| 97 | So(UserPermissionFromRole(-1).IsValid(), ShouldBeFalse) |
| 98 | So(UserPermissionFromRole(Invalid).IsValid(), ShouldBeFalse) |
| 99 | }) |
| 100 | Convey("query patterns", t, func() { |
| 101 | // empty patterns limitation |
| 102 | _, state := UserPermissionFromRole(Read).HasDisallowedQueryPatterns([]Query{ |
| 103 | { |
| 104 | Pattern: "select 1", |
| 105 | }, |
| 106 | { |
| 107 | Pattern: "insert into test values(1)", |
| 108 | }, |
| 109 | }) |
| 110 | So(state, ShouldBeFalse) |
| 111 | |
| 112 | // test patterns limit |
| 113 | up := UserPermissionFromRole(Read) |
| 114 | up.Patterns = append(up.Patterns, "select 1") |
| 115 | up.Patterns = append(up.Patterns, "select 2") |
| 116 | // has patterns more than limit |
| 117 | _, state = up.HasDisallowedQueryPatterns([]Query{ |
nothing calls this directly
no test coverage detected