Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(358)

Side by Side Diff: tests/html/crypto_test.dart

Issue 12326071: Adding supported checks and annotations to Crypto API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library crypto_test; 5 library crypto_test;
6 import '../../pkg/unittest/lib/unittest.dart'; 6 import '../../pkg/unittest/lib/unittest.dart';
7 import '../../pkg/unittest/lib/html_config.dart'; 7 import '../../pkg/unittest/lib/html_individual_config.dart';
8 import 'dart:html'; 8 import 'dart:html';
9 9
10 main() { 10 main() {
11 useHtmlConfiguration(); 11 useHtmlIndividualConfiguration();
12 12
13 test('exists', () { 13 group('supported', () {
14 var crypto = window.crypto; 14 test('supported', () {
15 expect(crypto is Crypto, isTrue); 15 expect(Crypto.supported, true);
16 });
16 }); 17 });
17 18
18 test('successful call', () { 19 group('functional', () {
19 var crypto = window.crypto; 20 if (Crypto.supported) {
20 var data = new Uint8Array(100); 21 // This will actually pass on FF since it has a Crypto API, but it is
21 expect(data.every((e) => e == 0), isTrue); 22 // incompatible.
22 crypto.getRandomValues(data); 23 test('exists', () {
23 // In theory this is flaky. However, in practice you will get 100 zeroes 24 var crypto = window.crypto;
24 // in a row from a cryptographically secure random number generator so 25 expect(crypto is Crypto, isTrue);
25 // rarely that we don't have to worry about it. 26 });
26 expect(data.any((e) => e != 0), isTrue);
27 });
28 27
29 test('type mismatch', () { 28 test('successful call', () {
30 var crypto = window.crypto; 29 var crypto = window.crypto;
31 var data = new Float32Array(100); 30 var data = new Uint8Array(100);
32 expect(() { 31 expect(data.every((e) => e == 0), isTrue);
33 crypto.getRandomValues(data); 32 crypto.getRandomValues(data);
34 }, throws, reason: 'Only typed array views with integer types allowed'); 33 // In theory this is flaky. However, in practice you will get 100 zeroes
34 // in a row from a cryptographically secure random number generator so
35 // rarely that we don't have to worry about it.
36 expect(data.any((e) => e != 0), isTrue);
37 });
38
39 test('type mismatch', () {
40 var crypto = window.crypto;
41 var data = new Float32Array(100);
42 expect(() {
43 crypto.getRandomValues(data);
44 }, throws, reason: 'Only typed array views with integer types allowed');
45 });
46 }
35 }); 47 });
36 } 48 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698