mirror of
https://github.com/hanzoai/commerce.git
synced 2026-10-30 15:08:42 +00:00
Multi-tenant commerce and billing: orders, subscriptions, invoices, plans, usage metering and a credit ledger. One Go binary. MIT OR Apache-2.0. Claude-Session: https://claude.ai/code/session_01SAtaDFm8VDiWrhYHNNtxMw
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/hanzoai/commerce/util/bit"
|
|
"github.com/hanzoai/commerce/util/permission"
|
|
|
|
. "github.com/hanzoai/commerce/util/test/ginkgo"
|
|
)
|
|
|
|
func Test(t *testing.T) {
|
|
Setup("util/bit", t)
|
|
}
|
|
|
|
var _ = Describe("Permission", func() {
|
|
It("All should pass for any permission", func() {
|
|
field := new(bit.Field)
|
|
field.Set(permission.All)
|
|
|
|
Expect(field.Has(permission.Admin)).To(Equal(true))
|
|
Expect(field.Has(permission.Charge)).To(Equal(true))
|
|
Expect(field.Has(permission.Capture)).To(Equal(true))
|
|
})
|
|
|
|
It("None should never pass", func() {
|
|
field := new(bit.Field)
|
|
field.Set(permission.None)
|
|
|
|
Expect(field.Has(permission.Admin)).To(Equal(false))
|
|
Expect(field.Has(permission.Charge)).To(Equal(false))
|
|
Expect(field.Has(permission.Capture)).To(Equal(false))
|
|
})
|
|
|
|
It("Should be able to build set of permissions from None", func() {
|
|
permissions := permission.None
|
|
masks := []bit.Mask{permission.Charge, permission.Capture}
|
|
for _, mask := range masks {
|
|
permissions |= mask
|
|
}
|
|
|
|
field := new(bit.Field)
|
|
field.Set(permissions)
|
|
|
|
Expect(field.Has(permission.Admin)).To(Equal(false))
|
|
Expect(field.Has(permission.Charge)).To(Equal(true))
|
|
Expect(field.Has(permission.Capture)).To(Equal(true))
|
|
})
|
|
})
|