Unverified Commit 0f3e93c6 authored by Simon Esposito's avatar Simon Esposito Committed by GitHub
Browse files

Always return nil uuid string in StorageWrite acks (#797)

Fix js logger tests.
Resolves #794.
parent fcc8f44d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -16,9 +16,9 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr
- Allow migrate subcommand to use database names that contain dashes.
- Add senderID param to channelIdBuild function.
- Improve leaderboard rank cache population at startup.

### Changed
- JavaScript global variables are made immutable after the `InitModule` function is invoked.
- JavaScript global variables are made immutable by default after the `InitModule` function is invoked.
- Return system user uuid string in `StorageWrite` acks for all runtimes.

### Fixed
- Fix the registered function name for 'nk.channelIdBuild' in the JavaScript runtime.
+1 −3
Original line number Diff line number Diff line
@@ -608,9 +608,7 @@ func storageWriteObject(ctx context.Context, logger *zap.Logger, tx *sql.Tx, aut
		Collection: object.Collection,
		Key:        object.Key,
		Version:    newVersion,
	}
	if ownerID != uuid.Nil.String() {
		ack.UserId = ownerID
		UserId:     ownerID,
	}

	return ack, nil
+1 −1
Original line number Diff line number Diff line
@@ -170,7 +170,7 @@ func TestJsLoggerWithFields(t *testing.T) {
var s = 'info';

var l1 = logger.withField('logger', 'l1');
var l2 = logger.withFields({'logger': 'l2', n: 1});
var l2 = logger.withFields({logger: 'l2', n: 1});
l1.info('logger one')
l2.info('logger two')
`
+1 −5
Original line number Diff line number Diff line
@@ -4179,11 +4179,7 @@ func (n *runtimeJavascriptNakamaModule) storageWrite(r *goja.Runtime) func(goja.
			result := make(map[string]interface{}, 4)
			result["key"] = ack.Key
			result["collection"] = ack.Collection
			if ack.UserId != "" {
			result["userId"] = ack.UserId
			} else {
				result["userId"] = nil
			}
			result["version"] = ack.Version

			results = append(results, result)
+20 −4
Original line number Diff line number Diff line
@@ -16,15 +16,21 @@ package server

import (
	"github.com/dop251/goja"
	"go.uber.org/zap"
	"go.uber.org/zap/zaptest/observer"
	"strings"
	"testing"
)

func TestJsObjectFreeze(t *testing.T) {
	t.Run("after freeze new global vars cannot be created", func(t *testing.T) {
		r := goja.New()
		observer, _ := observer.New(zap.InfoLevel)
		logger := zap.New(observer)
		config := NewConfig(logger)
		config.Runtime.JsReadOnlyGlobals = true

		freezeGlobalObject(r)
		r := goja.New()
		freezeGlobalObject(config, r)

		p, _ := goja.Compile("test", `
var k = 'new string';
@@ -40,6 +46,11 @@ var k = 'new string';
	})

	t.Run("after freeze global vars become immutable", func(t *testing.T) {
		observer, _ := observer.New(zap.InfoLevel)
		logger := zap.New(observer)
		config := NewConfig(logger)
		config.Runtime.JsReadOnlyGlobals = true

		r := goja.New()

		p, _ := goja.Compile("test", `
@@ -51,7 +62,7 @@ var m = {foo: 'bar'};
			t.Errorf("failed to run script: %s", err.Error())
		}

		freezeGlobalObject(r)
		freezeGlobalObject(config, r)

		p, _ = goja.Compile("test", `
m.foo = 'baz';
@@ -67,6 +78,11 @@ m.foo = 'baz';
	})

	t.Run("after freeze newly instanced objects are mutable", func(t *testing.T) {
		observer, _ := observer.New(zap.InfoLevel)
		logger := zap.New(observer)
		config := NewConfig(logger)
		config.Runtime.JsReadOnlyGlobals = true

		r := goja.New()

		p, _ := goja.Compile("test", `
@@ -78,7 +94,7 @@ var m = new Map();
			t.Error("Failed to run JS script")
		}

		freezeGlobalObject(r)
		freezeGlobalObject(config, r)

		p, _ = goja.Compile("test", `
m.set('a', 1);
Loading