Index: third_party/WebKit/LayoutTests/fast/mediastream/RTCPeerConnection-generateCertificate.html |
diff --git a/third_party/WebKit/LayoutTests/fast/mediastream/RTCPeerConnection-generateCertificate.html b/third_party/WebKit/LayoutTests/fast/mediastream/RTCPeerConnection-generateCertificate.html |
index 72b86eac66eab4f71238102c3e30959561690090..ab0dbf2ce231622d52786736c1f0ef28652cb57d 100644 |
--- a/third_party/WebKit/LayoutTests/fast/mediastream/RTCPeerConnection-generateCertificate.html |
+++ b/third_party/WebKit/LayoutTests/fast/mediastream/RTCPeerConnection-generateCertificate.html |
@@ -7,11 +7,18 @@ |
<script> |
description("Tests RTCPeerConnection.generateCertificate RSA/ECDSA."); |
+// Constants |
+var minuteInMs = 60 * 1000; |
+var dayInMs = 24 * 60 * minuteInMs; |
+ |
// Signature of the last generateCertificate call. |
var generateCallString = null; |
// Global certificate variables so that the "should..." methods can evaluate them. |
var certRSA = null; |
var certECDSA = null; |
+var certExpiresNegativeOneDay = null; |
+var certExpiresZero = null; |
+var certExpiresPositiveOneDay = null; |
// 1: RSA-2048 using public exponent = 65537. |
function generate1RSA() |
@@ -24,7 +31,7 @@ function generate1RSASuccessful(certificate) |
{ |
certRSA = certificate; |
testPassed(generateCallString); |
- certificateSanityCheck(certificate, 'certRSA'); |
+ certificateSanityCheck('certRSA'); |
generate2ECDSA(); |
} |
function generate1RSAFailed() |
@@ -44,17 +51,53 @@ function generate2ECDSASuccessful(certificate) |
{ |
certECDSA = certificate; |
testPassed(generateCallString); |
- certificateSanityCheck(certificate, 'certECDSA'); |
- finishJSTest(); |
+ certificateSanityCheck('certECDSA'); |
+ generate3ExpiresNegativeOneDay(); |
} |
function generate2ECDSAFailed() |
{ |
testFailed(generateCallString); |
+ generate3ExpiresNegativeOneDay(); |
+} |
+ |
+// 3-5: Verify that the |expires| attribute works (generate ECDSA because its faster). |
+function generate3ExpiresNegativeOneDay() |
+{ |
+ generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-256", expires:-dayInMs })'; |
+ webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-256", expires:-dayInMs }) |
+ .then(function(certificate) { certExpiresNegativeOneDay = certificate; generate4ExpiresZero(); }, generate4ExpiresZero); |
+} |
+function generate4ExpiresZero() |
+{ |
+ generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-256", expires:0 })'; |
+ webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-256", expires:0 }) |
+ .then(function(certificate) { certExpiresZero = certificate; generate5ExpiresPositiveOneDay(); }, generate5ExpiresPositiveOneDay); |
+} |
+function generate5ExpiresPositiveOneDay() |
+{ |
+ generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-256", expires:dayInMs })'; // +1 day |
+ webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-256", expires:dayInMs }) |
+ .then(function(certificate) { certExpiresPositiveOneDay = certificate; generate3to5ExpiresResolved(); }, generate3to5ExpiresResolved); |
+} |
+function generate3to5ExpiresResolved() |
+{ |
+ // A negative |expires| value is not a DOMTimeStamp, it should be ignored and |
+ // generate a certificate that has not expired. |
+ certificateSanityCheck('certExpiresNegativeOneDay'); |
+ |
+ // Check that the zero expiration certificate was generated but has expired. |
+ shouldBeNonNull('certExpiresZero'); |
+ shouldBeTrue('new Date().getTime() >= certExpiresZero.expires'); |
+ |
+ // Check that the +1 day expiration certificate expires in approximately 1 day (+/- 1 minute). |
+ shouldBeNonNull('certExpiresPositiveOneDay'); |
+ shouldBeTrue('Math.abs(certExpiresPositiveOneDay.expires - (new Date().getTime() + dayInMs)) <= minuteInMs'); |
+ |
finishJSTest(); |
} |
// Helper functions. |
-function certificateSanityCheck(cert, certVariableName) |
+function certificateSanityCheck(certVariableName) |
{ |
shouldBeNonNull(certVariableName); |
shouldBeTrue('new Date().getTime() < ' + certVariableName + '.expires'); |