aboutsummaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-12-22 13:05:59 +0100
committerGitHub <noreply@github.com>2022-12-22 13:05:59 +0100
commit5eed31fea330f5f0500384c98272b9a75a44fba4 (patch)
tree8f968c15c3d49e6626ef762e5f3a6e3e4e1ab74d /setup
parent09dff951d6be1fee1cc7c6872e98eb27e81fc778 (diff)
Handle guest access [1/2?] (#2872)
Needs https://github.com/matrix-org/sytest/pull/1315, as otherwise the membership events aren't persisted yet when hitting `/state` after kicking guest users. Makes the following tests pass: ``` Guest users denied access over federation if guest access prohibited Guest users are kicked from guest_access rooms on revocation of guest_access Guest users are kicked from guest_access rooms on revocation of guest_access over federation ``` Todo (in a follow up PR): - Restrict access to CS API Endpoints as per https://spec.matrix.org/v1.4/client-server-api/#client-behaviour-14 Co-authored-by: kegsay <kegan@matrix.org>
Diffstat (limited to 'setup')
-rw-r--r--setup/config/config_global.go2
-rw-r--r--setup/config/config_test.go54
2 files changed, 55 insertions, 1 deletions
diff --git a/setup/config/config_global.go b/setup/config/config_global.go
index 511951fe..804eb1a2 100644
--- a/setup/config/config_global.go
+++ b/setup/config/config_global.go
@@ -174,7 +174,7 @@ func (c *Global) SigningIdentityFor(serverName gomatrixserverlib.ServerName) (*g
return id, nil
}
}
- return nil, fmt.Errorf("no signing identity %q", serverName)
+ return nil, fmt.Errorf("no signing identity for %q", serverName)
}
func (c *Global) SigningIdentities() []*gomatrixserverlib.SigningIdentity {
diff --git a/setup/config/config_test.go b/setup/config/config_test.go
index ee7e7389..3408bf46 100644
--- a/setup/config/config_test.go
+++ b/setup/config/config_test.go
@@ -16,8 +16,10 @@ package config
import (
"fmt"
+ "reflect"
"testing"
+ "github.com/matrix-org/gomatrixserverlib"
"gopkg.in/yaml.v2"
)
@@ -290,3 +292,55 @@ func TestUnmarshalDataUnit(t *testing.T) {
}
}
}
+
+func Test_SigningIdentityFor(t *testing.T) {
+ tests := []struct {
+ name string
+ virtualHosts []*VirtualHost
+ serverName gomatrixserverlib.ServerName
+ want *gomatrixserverlib.SigningIdentity
+ wantErr bool
+ }{
+ {
+ name: "no virtual hosts defined",
+ wantErr: true,
+ },
+ {
+ name: "no identity found",
+ serverName: gomatrixserverlib.ServerName("doesnotexist"),
+ wantErr: true,
+ },
+ {
+ name: "found identity",
+ serverName: gomatrixserverlib.ServerName("main"),
+ want: &gomatrixserverlib.SigningIdentity{ServerName: "main"},
+ },
+ {
+ name: "identity found on virtual hosts",
+ serverName: gomatrixserverlib.ServerName("vh2"),
+ virtualHosts: []*VirtualHost{
+ {SigningIdentity: gomatrixserverlib.SigningIdentity{ServerName: "vh1"}},
+ {SigningIdentity: gomatrixserverlib.SigningIdentity{ServerName: "vh2"}},
+ },
+ want: &gomatrixserverlib.SigningIdentity{ServerName: "vh2"},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ c := &Global{
+ VirtualHosts: tt.virtualHosts,
+ SigningIdentity: gomatrixserverlib.SigningIdentity{
+ ServerName: "main",
+ },
+ }
+ got, err := c.SigningIdentityFor(tt.serverName)
+ if (err != nil) != tt.wantErr {
+ t.Errorf("SigningIdentityFor() error = %v, wantErr %v", err, tt.wantErr)
+ return
+ }
+ if !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("SigningIdentityFor() got = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}