Skip to content

Commit

Permalink
Merge pull request dart-backend#126 from dukefirehawk/feature/upgrade…
Browse files Browse the repository at this point in the history
…_sdk

Feature/upgrade sdk
  • Loading branch information
dukefirehawk authored Jun 3, 2024
2 parents e2c0230 + e802de1 commit 2698c4d
Show file tree
Hide file tree
Showing 20 changed files with 91 additions and 60 deletions.
5 changes: 5 additions & 0 deletions packages/auth/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Change Log

## 8.2.0

* Require Dart >= 3.3
* Updated `lints` to 4.0.0

## 8.1.1

* Updated repository link
Expand Down
2 changes: 1 addition & 1 deletion packages/auth/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: angel3_auth
description: A complete authentication plugin for Angel3. Includes support for stateless JWT tokens, Basic Auth, and more.
version: 8.1.1
version: 8.2.0
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/auth
environment:
Expand Down
5 changes: 5 additions & 0 deletions packages/auth_oauth2/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Change Log

## 8.2.0

* Require Dart >= 3.3
* Updated `lints` to 4.0.0

## 8.1.1

* Updated repository link
Expand Down
2 changes: 1 addition & 1 deletion packages/auth_oauth2/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: angel3_auth_oauth2
version: 8.1.1
version: 8.2.0
description: Angel3 library for authenticating users with external identity providers via OAuth2.
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/auth_oauth2
Expand Down
6 changes: 3 additions & 3 deletions packages/auth_twitter/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

## 8.0.0

* Require Dart >= 3.0
* Require Dart >= 3.3
* Updated `oauth1` to `belatuk_oauth1`
* Updated `lints` to 3.0.0
* Fixed linter warnings
* Updated `lints` to 4.0.0
* Updated repository link
* Fixed linter warnings

## 7.0.0

Expand Down
1 change: 1 addition & 0 deletions packages/auth_twitter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
[![License](https://img.shields.io/github/license/dart-backend/angel)](https://github.com/dart-backend/angel/tree/master/packages/auth_twitter/LICENSE)

**Not ready for release**
Angel3 authentication strategy using Twitter OAuth 1.0a.

See the [example](example/example.dart);
4 changes: 2 additions & 2 deletions packages/auth_twitter/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
name: "angel3_auth_twitter"
description: Angel3 authentication strategy for Twitter login. Auto-signs requests.
version: 8.0.1
version: 8.0.0
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/auth_twitter
publish_to: none
environment:
sdk: ">=3.0.0 <4.0.0"
sdk: ">=3.3.0 <4.0.0"
dependencies:
angel3_auth: ^8.0.0
angel3_framework: ^8.0.0
Expand Down
5 changes: 5 additions & 0 deletions packages/cache/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Change Log

## 8.2.0

* Require Dart >= 3.3
* Updated `lints` to 4.0.0

## 8.1.1

* Updated repository link
Expand Down
4 changes: 2 additions & 2 deletions packages/cache/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: angel3_cache
version: 8.1.1
version: 8.2.0
description: A service that provides HTTP caching to the response data for Angel3
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/cache
environment:
sdk: '>=3.3.0 <4.0.0'
sdk: '>=3.4.0 <4.0.0'
dependencies:
angel3_framework: ^8.0.0
collection: ^1.17.0
Expand Down
5 changes: 5 additions & 0 deletions packages/framework/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Change Log

## 8.4.0

* Require Dart >= 3.3
* Updated `lints` to 4.0.0

## 8.3.2

* Updated README
Expand Down
2 changes: 1 addition & 1 deletion packages/framework/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: angel3_framework
version: 8.3.2
version: 8.4.0
description: A high-powered HTTP server extensible framework with dependency injection, routing and much more.
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/framework
Expand Down
7 changes: 7 additions & 0 deletions packages/mongo/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Change Log

## 8.2.0

* Require Dart >= 3.3
* Updated `mongo_dart` to 0.10.2
* Updated `lints` to 3.0.0
* Fixed deprecated methods

## 8.1.1

* Updated repository link
Expand Down
8 changes: 4 additions & 4 deletions packages/mongo/lib/mongo_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
for (var key in doc.keys) {
var value = doc[key];
if (value is ObjectId) {
result[key] = value.toHexString();
result[key] = value.oid;
} else if (value is! RequestContext && value is! ResponseContext) {
result[key] = value;
}
Expand Down Expand Up @@ -133,7 +133,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {

if (found == null) {
throw AngelHttpException.notFound(
message: 'No record found for ID ${localId.toHexString()}');
message: 'No record found for ID ${localId.oid}');
}

return _jsonify(found, params);
Expand Down Expand Up @@ -171,7 +171,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
update: result,
returnNew: true) as FutureOr<Map<String, dynamic>>);
result = _jsonify(modified, params);
result['id'] = _makeId(id).toHexString();
result['id'] = _makeId(id).oid;
return result;
} catch (e, st) {
//printDebug(e, st, 'MODIFY');
Expand Down Expand Up @@ -199,7 +199,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
returnNew: true,
upsert: true) as FutureOr<Map<String, dynamic>>);
result = _jsonify(updated, params);
result['id'] = _makeId(id).toHexString();
result['id'] = _makeId(id).oid;
return result;
} catch (e, st) {
//printDebug(e, st, 'UPDATE');
Expand Down
4 changes: 2 additions & 2 deletions packages/mongo/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: angel3_mongo
version: 8.1.1
version: 8.2.0
description: MongoDB-enabled services for the Angel3 framework. Well-tested.
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/mongo
Expand All @@ -9,7 +9,7 @@ dependencies:
angel3_framework: ^8.0.0
belatuk_json_serializer: ^7.1.0
belatuk_merge_map: ^5.1.0
mongo_dart: ^0.9.0
mongo_dart: ^0.10.2
dev_dependencies:
http: ^1.0.0
test: ^1.24.0
Expand Down
60 changes: 29 additions & 31 deletions packages/mongo/test/generic_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ void main() {
group('Generic Tests', () {
Angel app;
late AngelHttp transport;
http.Client? client;
late http.Client client;
var db = Db('mongodb://localhost:27017/angel_mongo');
late DbCollection testData;
String? url;
HookedService<String, Map<String, dynamic>, MongoService>? greetingService;
late HookedService<String, Map<String, dynamic>, MongoService>
greetingService;

setUp(() async {
app = Angel();
Expand All @@ -41,7 +42,7 @@ void main() {

var service = MongoService(testData);
greetingService = HookedService(service);
wireHooked(greetingService!);
wireHooked(greetingService);

app.use('/api', greetingService as Service);

Expand All @@ -54,44 +55,41 @@ void main() {
await testData.remove(<String, dynamic>{});
await db.close();
await transport.close();
client = null;
url = null;
greetingService = null;
});

test('query fields mapped to filters', () async {
await greetingService!.create({'foo': 'bar'});
await greetingService.create({'foo': 'bar'});
expect(
await greetingService!.index({
await greetingService.index({
'query': {'foo': 'not bar'}
}),
isEmpty,
);
expect(
await greetingService!.index(),
await greetingService.index(),
isNotEmpty,
);
});

test('insert items', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
expect(response.statusCode, isIn([200, 201]));

response = await client!.get(Uri.parse('$url/api'));
response = await client.get(Uri.parse('$url/api'));
expect(response.statusCode, isIn([200, 201]));
var users = god.deserialize(response.body,
outputType: <Map>[].runtimeType) as List<Map>;
expect(users.length, equals(1));
});

test('read item', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
expect(response.statusCode, isIn([200, 201]));
var created = god.deserialize(response.body) as Map;

response = await client!.get(Uri.parse("$url/api/${created['id']}"));
response = await client.get(Uri.parse("$url/api/${created['id']}"));
expect(response.statusCode, isIn([200, 201]));
var read = god.deserialize(response.body) as Map;
expect(read['id'], equals(created['id']));
Expand All @@ -100,37 +98,37 @@ void main() {
});

test('findOne', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
expect(response.statusCode, isIn([200, 201]));
var created = god.deserialize(response.body) as Map;

var id = ObjectId.fromHexString(created['id'] as String);
var read = await greetingService!.findOne({'query': where.id(id)});
var read = await greetingService.findOne({'query': where.id(id)});
expect(read['id'], equals(created['id']));
expect(read['to'], equals('world'));
//expect(read['createdAt'], isNot(null));
});

test('readMany', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
expect(response.statusCode, isIn([200, 201]));
var created = god.deserialize(response.body) as Map;

var id = ObjectId.fromHexString(created['id'] as String);
var read = await greetingService!.readMany([id.toHexString()]);
var read = await greetingService.readMany([id.oid]);
expect(read, [created]);
//expect(read['createdAt'], isNot(null));
});

test('modify item', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
expect(response.statusCode, isIn([200, 201]));
var created = god.deserialize(response.body) as Map;

response = await client!.patch(Uri.parse("$url/api/${created['id']}"),
response = await client.patch(Uri.parse("$url/api/${created['id']}"),
body: god.serialize({'to': 'Mom'}), headers: headers);
var modified = god.deserialize(response.body) as Map;
expect(response.statusCode, isIn([200, 201]));
Expand All @@ -140,12 +138,12 @@ void main() {
});

test('update item', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
expect(response.statusCode, isIn([200, 201]));
var created = god.deserialize(response.body) as Map;

response = await client!.post(Uri.parse("$url/api/${created['id']}"),
response = await client.post(Uri.parse("$url/api/${created['id']}"),
body: god.serialize({'to': 'Updated'}), headers: headers);
var modified = god.deserialize(response.body) as Map;
expect(response.statusCode, isIn([200, 201]));
Expand All @@ -155,28 +153,28 @@ void main() {
});

test('remove item', () async {
var response = await client!.post(Uri.parse('$url/api'),
var response = await client.post(Uri.parse('$url/api'),
body: god.serialize(testGreeting), headers: headers);
var created = god.deserialize(response.body) as Map;

var lastCount = (await greetingService!.index()).length;
var lastCount = (await greetingService.index()).length;

await client!.delete(Uri.parse("$url/api/${created['id']}"));
expect((await greetingService!.index()).length, equals(lastCount - 1));
await client.delete(Uri.parse("$url/api/${created['id']}"));
expect((await greetingService.index()).length, equals(lastCount - 1));
});

test('cannot remove all unless explicitly set', () async {
var response = await client!.delete(Uri.parse('$url/api/null'));
var response = await client.delete(Uri.parse('$url/api/null'));
expect(response.statusCode, 403);
});

test('\$sort and query parameters', () async {
// Search by where.eq
Map world = await greetingService!.create({'to': 'world'});
await greetingService!.create({'to': 'Mom'});
await greetingService!.create({'to': 'Updated'});
Map world = await greetingService.create({'to': 'world'});
await greetingService.create({'to': 'Mom'});
await greetingService.create({'to': 'Updated'});

var response = await client!.get(Uri.parse('$url/api?to=world'));
var response = await client.get(Uri.parse('$url/api?to=world'));
print(response.body);
var queried = god.deserialize(response.body,
outputType: <Map>[].runtimeType) as List<Map>;
Expand All @@ -193,7 +191,7 @@ void main() {
expect(queried[1]["id"], equals(Mom["id"]));
expect(queried[2]["id"], equals(world["id"]));*/

queried = await greetingService!.index({
queried = await greetingService.index({
'\$query': {
'_id': where.id(ObjectId.fromHexString(world['id'] as String))
}
Expand Down
6 changes: 6 additions & 0 deletions packages/websocket/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## 8.2.0

* Require Dart >= 3.3
* Updated `lints` to 4.0.0
* Updated `web_socket_channel` to 3.0.0

## 8.1.1

* Updated repository link
Expand Down
2 changes: 1 addition & 1 deletion packages/websocket/lib/base_websocket_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ abstract class BaseWebSocketClient extends BaseAngelClient {
Future close() async {
on._close();
scheduleMicrotask(() async {
await _socket!.sink.close(status.goingAway);
await _socket!.sink.close(status.normalClosure);
await _onData.close();
await _onAllEvents.close();
await _onAuthenticated.close();
Expand Down
4 changes: 2 additions & 2 deletions packages/websocket/lib/server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -508,8 +508,8 @@ class AngelWebSocket {
if (protocol != null) sink.add('Sec-WebSocket-Protocol: $protocol\r\n');
sink.add('\r\n');

var ws = WebSocketChannel(ctrl.foreign);
var socket = WebSocketContext(ws, req, res);
//var ws = IOWebSocketChannel.connect(ctrl.foreign);
var socket = WebSocketContext(ctrl.foreign, req, res);
scheduleMicrotask(() => handleClient(socket));
return false;
}
Expand Down
Loading

0 comments on commit 2698c4d

Please sign in to comment.