Skip to content

Commit

Permalink
fixup! feat!: improve TD serialization behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
JKRhb committed Jan 3, 2024
1 parent 8612e25 commit f06f37d
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/src/binding_mqtt/mqtt_extensions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ extension MqttFormExtension on AugmentedForm {
if (qosValue != null) {
throw ValidationException(
"Encountered unknown QoS value $qosValue. "
"in form with href $href",
"in form with href $href of Thing Description with Identifier "
"$tdIdentifier.",
);
}

Expand Down
60 changes: 60 additions & 0 deletions test/binding_mqtt/mqtt_extension_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright 2024 Contributors to the Eclipse Foundation. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//
// SPDX-License-Identifier: BSD-3-Clause

import "package:dart_wot/dart_wot.dart";
import 'package:dart_wot/src/binding_mqtt/mqtt_extensions.dart';
import "package:dart_wot/src/definitions/validation/validation_exception.dart";
import "package:test/test.dart";

void main() {
group("MQTT Binding Extensions should", () {
test("reject forms with unknown QoS values", () {
const id = "urn:foobar";
const href = "mqtt://example.org/test";
final thingDescription = ThingDescription.fromJson(
const {
"@context": [
"https://www.w3.org/2022/wot/td/v1.1",
{
"mqv": "http://www.example.org/mqtt-binding#",
}
],
"title": "Test TD",
"id": id,
"properties": {
"test": {
"forms": [
{
"href": href,
"mqv:qos": "foobar",
}
],
},
},
"security": ["nosec_sc"],
"securityDefinitions": {
"nosec_sc": {
"scheme": "nosec",
},
},
},
);
final affordance = thingDescription.properties?["test"];

final augmentedForm = AugmentedForm(
affordance!.forms.first,
affordance,
thingDescription,
const {},
);

expect(
() => augmentedForm.qualityOfService,
throwsA(isA<ValidationException>()),
);
});
});
}

0 comments on commit f06f37d

Please sign in to comment.