mirror of
				https://github.com/owncast/owncast.git
				synced 2025-11-04 05:17:27 +08:00 
			
		
		
		
	* add public func to lookup a ChatClient by its clientId * add facility to send a system message directly to a user * add clientId field to UserEvent * implement simple http endpoint to send a message to a user * let mux handle new directSystemMessageToUser endpoint * add ClientId to UserEvents across the codebase * render body of system-message to client * add clientId to Chat-Message * add tests showing how url-parsing should work * add simple rest endpoint helpers for parameter-parsing and easy routing * use newly added rest-endpoint helper to rout to Client-Messaging controller * use safe "ReadRestUrlParameter" to parse ClientId * remove empty HandleFunc in router * set Header directly to prevent built-in (platform-dependent) canonicalization to kick in * fix typo in "Parameter" message * remove debug-logging of HTTP headers in REST-helpers * convert to uint32 to prevent overruns when converting to wraptype uint later on * resolve linter-ouchies * resolve linter potential nil-deref warning * document the SendSystemMessageToClient endpoint in swaggerdoc * remove clientId assignment causing potential nil dereference in userDisabledEvent-case as the clientId isn't relevant here anyway * make findClientById private, so its not accessible outside of core/chat * remove redundant string type hint * Update PR based on linter requirements Co-authored-by: Raffael Rehberger <raffael@rtrace.io> Co-authored-by: Gabe Kangas <gabek@real-ity.com>
		
			
				
	
	
		
			40 lines
		
	
	
		
			951 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			951 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package utils
 | 
						|
 | 
						|
import (
 | 
						|
	"strings"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestGetPatternForRestEndpoint(t *testing.T) {
 | 
						|
	expected := "/hello/"
 | 
						|
	endpoints := [...]string{"/hello/{param1}", "/hello/{param1}/{param2}", "/hello/{param1}/world/{param2}"}
 | 
						|
	for _, endpoint := range endpoints {
 | 
						|
		if ep := getPatternForRestEndpoint(endpoint); ep != expected {
 | 
						|
			t.Errorf("%s p does not match expected %s", ep, expected)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestReadParameter(t *testing.T) {
 | 
						|
	expected := "world"
 | 
						|
	endpoints := [...]string{
 | 
						|
		"/hello/{p1}",
 | 
						|
		"/hello/cruel/{p1}",
 | 
						|
		"/hello/{p1}/my/friend",
 | 
						|
		"/hello/{p1}/{p2}/friend",
 | 
						|
		"/hello/{p2}/{p3}/{p1}",
 | 
						|
		"/{p1}/is/nice",
 | 
						|
		"/{p1}/{p1}/{p1}",
 | 
						|
	}
 | 
						|
 | 
						|
	for _, ep := range endpoints {
 | 
						|
		v, err := readParameter(ep, strings.Replace(ep, "{p1}", expected, -1), "p1")
 | 
						|
		if err != nil {
 | 
						|
			t.Errorf("Unexpected error when reading parameter: %s", err.Error())
 | 
						|
		}
 | 
						|
		if v != expected {
 | 
						|
			t.Errorf("'%s' should have returned %s", ep, expected)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |