Skip to content

Commit

Permalink
Merge remote-tracking branch 'src/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
boehlke committed Jan 10, 2025
2 parents ee19e13 + 66f2e4f commit 3f9c602
Show file tree
Hide file tree
Showing 24 changed files with 748 additions and 711 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.23.3-alpine as base
FROM golang:1.23.4-alpine as base
WORKDIR /root

RUN apk add git
Expand Down
16 changes: 8 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@ module github.com/OpenSlides/openslides-autoupdate-service
go 1.23

require (
github.com/alecthomas/kong v1.4.0
github.com/alecthomas/kong v1.6.1
github.com/coreos/go-oidc v2.2.1+incompatible
github.com/goccy/go-yaml v1.14.3
github.com/goccy/go-yaml v1.15.13
github.com/golang-jwt/jwt/v4 v4.5.1
github.com/gomodule/redigo v1.9.2
github.com/jackc/pgx/v5 v5.7.1
github.com/jackc/pgx/v5 v5.7.2
github.com/klauspost/compress v1.17.11
github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1
github.com/ory/dockertest/v3 v3.11.0
github.com/ostcar/topic v0.4.1
github.com/stretchr/testify v1.9.0
github.com/stretchr/testify v1.10.0
github.com/zeebo/xxh3 v1.0.2
golang.org/x/oauth2 v0.24.0
golang.org/x/sync v0.9.0
golang.org/x/sys v0.27.0
golang.org/x/sync v0.10.0
golang.org/x/sys v0.29.0
)

require (
Expand Down Expand Up @@ -53,8 +53,8 @@ require (
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
golang.org/x/crypto v0.29.0 // indirect
golang.org/x/text v0.20.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/text v0.21.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
32 changes: 16 additions & 16 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEV
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/kong v1.4.0 h1:UL7tzGMnnY0YRMMvJyITIRX1EpO6RbBRZDNcCevy3HA=
github.com/alecthomas/kong v1.4.0/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/kong v1.6.1 h1:/7bVimARU3uxPD0hbryPE8qWrS3Oz3kPQoxA/H2NKG8=
github.com/alecthomas/kong v1.6.1/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
Expand All @@ -35,8 +35,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/goccy/go-yaml v1.14.3 h1:8tVD+aqqPLWisSEhM+6wWoiURWXCx6BwaTKS6ZeITgM=
github.com/goccy/go-yaml v1.14.3/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg=
github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
Expand All @@ -53,8 +53,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs=
github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA=
github.com/jackc/pgx/v5 v5.7.2 h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI=
github.com/jackc/pgx/v5 v5.7.2/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
Expand Down Expand Up @@ -102,8 +102,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
Expand All @@ -120,8 +120,8 @@ github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaD
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
Expand All @@ -133,19 +133,19 @@ golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbht
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
Expand Down
12 changes: 0 additions & 12 deletions internal/restrict/collection/collection.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,6 @@ func (r *restrictCache) Modes(mode string) FieldRestricter {
}
}

func (r *restrictCache) SuperAdmin(mode string) FieldRestricter {
type superRestricter interface {
SuperAdmin(mode string) FieldRestricter
}

if sr, ok := r.Restricter.(superRestricter); ok {
return sr.SuperAdmin(mode)
}

return nil
}

var collectionMap = map[string]Restricter{
ActionWorker{}.Name(): ActionWorker{},
AgendaItem{}.Name(): AgendaItem{},
Expand Down
2 changes: 2 additions & 0 deletions internal/restrict/collection/gender.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
)

// Gender handles permission for action_worker.
//
// Everyone can see all genders.
type Gender struct{}

// Name returns the collection name.
Expand Down
16 changes: 16 additions & 0 deletions internal/restrict/collection/group.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import (
"context"
"fmt"

"github.com/OpenSlides/openslides-autoupdate-service/internal/restrict/perm"
"github.com/OpenSlides/openslides-autoupdate-service/pkg/datastore/dsfetch"
)

// Group handels restrictions of the collection group.
//
// The user can see a group, if the user can see the group's meeting.
// Organization managers can see all groups.
//
// Mode A: The user can see the group.
type Group struct{}
Expand Down Expand Up @@ -39,6 +41,20 @@ func (g Group) Modes(mode string) FieldRestricter {
}

func (g Group) see(ctx context.Context, ds *dsfetch.Fetch, groupIDs ...int) ([]int, error) {
requestUser, err := perm.RequestUserFromContext(ctx)
if err != nil {
return nil, fmt.Errorf("getting request user: %w", err)
}

isOrgaManager, err := perm.HasOrganizationManagementLevel(ctx, ds, requestUser, perm.OMLCanManageOrganization)
if err != nil {
return nil, fmt.Errorf("checking for superadmin: %w", err)
}

if isOrgaManager {
return groupIDs, nil
}

return eachMeeting(ctx, ds, g, groupIDs, func(meetingID int, ids []int) ([]int, error) {
canSee, err := Collection(ctx, Meeting{}.Name()).Modes("B")(ctx, ds, meetingID)
if err != nil {
Expand Down
16 changes: 16 additions & 0 deletions internal/restrict/collection/group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,23 @@ func TestGroupModeA(t *testing.T) {
group_ids: [1]
committee_id: 2
user/5/meeting_user_ids: [50]
`,
withRequestUser(5),
)

testCase(
"Organization Manager in locked meeting",
t,
g.Modes("A"),
true,
`---
group/1:
meeting_id: 30
meeting/30:
group_ids: [1]
committee_id: 2
locked_from_inside: true
user/5/organization_management_level: can_manage_organization
`,
withRequestUser(5),
)
Expand Down
2 changes: 0 additions & 2 deletions internal/restrict/collection/mediafile.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ func (m Mediafile) MeetingID(ctx context.Context, ds *dsfetch.Fetch, id int) (in

collection, rawID, found := strings.Cut(genericOwnerID, "/")
if !found {
// TODO LAST ERROR
return 0, false, fmt.Errorf("invalid ownerID: %s", genericOwnerID)
}

Expand All @@ -46,7 +45,6 @@ func (m Mediafile) MeetingID(ctx context.Context, ds *dsfetch.Fetch, id int) (in

ownerID, err := strconv.Atoi(rawID)
if err != nil {
// TODO LAST ERROR
return 0, false, fmt.Errorf("invalid id part of ownerID: %s", genericOwnerID)
}

Expand Down
22 changes: 20 additions & 2 deletions internal/restrict/collection/meeting.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
// If `meeting/locked_from_inside` is set, only users in the meeting can see it.
// If the user is locked out (meeting_user/locked_out) he can not see the meeting.
//
// Mode A: Always visible to everyone.
// Mode A: The user can see the meeting or is organization manager or higher.
//
// Mode B: The user can see the meeting.
//
Expand All @@ -47,7 +47,7 @@ func (m Meeting) MeetingID(ctx context.Context, ds *dsfetch.Fetch, id int) (int,
func (m Meeting) Modes(mode string) FieldRestricter {
switch mode {
case "A":
return Allways
return m.modeA
case "B":
return m.see
case "C":
Expand Down Expand Up @@ -185,6 +185,24 @@ LOOP_MEETINGS:
return allowed, nil
}

func (m Meeting) modeA(ctx context.Context, ds *dsfetch.Fetch, meetingIDs ...int) ([]int, error) {
requestUser, err := perm.RequestUserFromContext(ctx)
if err != nil {
return nil, fmt.Errorf("getting request user: %w", err)
}

isOrgaManager, err := perm.HasOrganizationManagementLevel(ctx, ds, requestUser, perm.OMLCanManageOrganization)
if err != nil {
return nil, fmt.Errorf("checking for superadmin: %w", err)
}

if isOrgaManager {
return meetingIDs, nil
}

return Collection(ctx, m.Name()).Modes("B")(ctx, ds, meetingIDs...)
}

func (m Meeting) modeC(ctx context.Context, ds *dsfetch.Fetch, meetingIDs ...int) ([]int, error) {
allowed, err := eachCondition(meetingIDs, func(meetingID int) (bool, error) {
perms, err := perm.FromContext(ctx, meetingID)
Expand Down
48 changes: 32 additions & 16 deletions internal/restrict/collection/meeting_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,30 @@ import (
)

func TestMeetingModeA(t *testing.T) {
var m collection.Meeting
m := collection.Meeting{}.Modes("A")

testCase(
"without perms",
"locked meeting, orga manager",
t,
m.Modes("A"),
m,
true,
"meeting/30/id: 30",
`
user/1/organization_management_level: can_manage_organization
meeting/30/locked_from_inside: true
`,
withElementID(30),
)

testCase(
"locked meeting, user manager",
t,
m,
false,
`
user/1/organization_management_level: can_manage_users
meeting/30/locked_from_inside: true
`,
withElementID(30),
)
}

Expand Down Expand Up @@ -83,10 +99,10 @@ func TestMeetingModeB(t *testing.T) {
meeting/30:
enable_anonymous: true
group_ids: [7]
group/7/meeting_user_ids: [10]
meeting_user/10:
user_id: 1
user_id: 1
locked_out: true
meeting_id: 30
Expand All @@ -104,7 +120,7 @@ func TestMeetingModeB(t *testing.T) {
meeting/30:
group_ids: [7]
committee_id: 2
group/7/meeting_user_ids: [10]
meeting_user/10:
user_id: 1
Expand All @@ -123,10 +139,10 @@ func TestMeetingModeB(t *testing.T) {
meeting/30:
group_ids: [7]
committee_id: 2
group/7/meeting_user_ids: [10]
meeting_user/10:
user_id: 1
user_id: 1
locked_out: true
meeting_id: 30
Expand Down Expand Up @@ -163,7 +179,7 @@ func TestMeetingModeB(t *testing.T) {
group/7/meeting_user_ids: [10]
meeting_user/10:
user_id: 1
user_id: 1
locked_out: true
meeting_id: 30
`,
Expand Down Expand Up @@ -210,13 +226,14 @@ func TestMeetingModeB(t *testing.T) {
)

testCase(
"CML can manage organization",
"OML can manage organization",
t,
m.Modes("B"),
true,
`---
user/1/organization_management_level: can_manage_organization
meeting/30/id: 30
meeting/30:
committee_id: 4
`,
withElementID(30),
)
Expand All @@ -231,10 +248,10 @@ func TestMeetingModeB(t *testing.T) {
meeting/30:
enable_anonymous: true
group_ids: [7]
group/7/meeting_user_ids: [10]
meeting_user/10:
user_id: 1
user_id: 1
locked_out: true
meeting_id: 30
Expand Down Expand Up @@ -289,7 +306,7 @@ func TestMeetingModeB(t *testing.T) {
meeting/30:
locked_from_inside: true
enable_anonymous: true
`,
withElementID(30),
withRequestUser(0),
Expand Down Expand Up @@ -368,5 +385,4 @@ func TestMeetingModeE(t *testing.T) {
`,
withElementID(30),
)

}
Loading

0 comments on commit 3f9c602

Please sign in to comment.