| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 cr.define('certificate_manager_page', function() { | 5 cr.define('certificate_manager_page', function() { |
| 6 /** | 6 /** |
| 7 * A test version of CertificatesBrowserProxy. Provides helper methods | 7 * A test version of CertificatesBrowserProxy. Provides helper methods |
| 8 * for allowing tests to know when a method was called, as well as | 8 * for allowing tests to know when a method was called, as well as |
| 9 * specifying mock responses. | 9 * specifying mock responses. |
| 10 * | 10 * |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 var model = createSampleCertificateSubnode(); | 299 var model = createSampleCertificateSubnode(); |
| 300 | 300 |
| 301 suite('CertificateDeleteConfirmationDialogTests', function() { | 301 suite('CertificateDeleteConfirmationDialogTests', function() { |
| 302 setup(function() { | 302 setup(function() { |
| 303 browserProxy = new TestCertificatesBrowserProxy(); | 303 browserProxy = new TestCertificatesBrowserProxy(); |
| 304 settings.CertificatesBrowserProxyImpl.instance_ = browserProxy; | 304 settings.CertificatesBrowserProxyImpl.instance_ = browserProxy; |
| 305 PolymerTest.clearBody(); | 305 PolymerTest.clearBody(); |
| 306 dialog = document.createElement( | 306 dialog = document.createElement( |
| 307 'settings-certificate-delete-confirmation-dialog'); | 307 'settings-certificate-delete-confirmation-dialog'); |
| 308 dialog.model = model; | 308 dialog.model = model; |
| 309 dialog.certificateType = settings.CertificateType.PERSONAL; | 309 dialog.certificateType = CertificateType.PERSONAL; |
| 310 document.body.appendChild(dialog); | 310 document.body.appendChild(dialog); |
| 311 }); | 311 }); |
| 312 | 312 |
| 313 teardown(function() { dialog.remove(); }); | 313 teardown(function() { dialog.remove(); }); |
| 314 | 314 |
| 315 test('DeleteSuccess', function() { | 315 test('DeleteSuccess', function() { |
| 316 assertTrue(dialog.$.dialog.opened); | 316 assertTrue(dialog.$.dialog.opened); |
| 317 // Check that the dialog title includes the certificate name. | 317 // Check that the dialog title includes the certificate name. |
| 318 var titleEl = Polymer.dom(dialog.$.dialog).querySelector('.title'); | 318 var titleEl = Polymer.dom(dialog.$.dialog).querySelector('.title'); |
| 319 assertTrue(titleEl.textContent.includes(model.name)); | 319 assertTrue(titleEl.textContent.includes(model.name)); |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 return eventToPromise(settings.CertificateActionEvent, subentry); | 500 return eventToPromise(settings.CertificateActionEvent, subentry); |
| 501 }; | 501 }; |
| 502 | 502 |
| 503 suite('CertificateManagerPageTests', function() { | 503 suite('CertificateManagerPageTests', function() { |
| 504 setup(function() { | 504 setup(function() { |
| 505 browserProxy = new TestCertificatesBrowserProxy(); | 505 browserProxy = new TestCertificatesBrowserProxy(); |
| 506 settings.CertificatesBrowserProxyImpl.instance_ = browserProxy; | 506 settings.CertificatesBrowserProxyImpl.instance_ = browserProxy; |
| 507 PolymerTest.clearBody(); | 507 PolymerTest.clearBody(); |
| 508 subentry = document.createElement('settings-certificate-subentry'); | 508 subentry = document.createElement('settings-certificate-subentry'); |
| 509 subentry.model = createSampleCertificateSubnode(); | 509 subentry.model = createSampleCertificateSubnode(); |
| 510 subentry.certificateType = settings.CertificateType.PERSONAL; | 510 subentry.certificateType = CertificateType.PERSONAL; |
| 511 document.body.appendChild(subentry); | 511 document.body.appendChild(subentry); |
| 512 | 512 |
| 513 // Bring up the popup menu for the following tests to use. | 513 // Bring up the popup menu for the following tests to use. |
| 514 MockInteractions.tap(subentry.$.dots); | 514 MockInteractions.tap(subentry.$.dots); |
| 515 Polymer.dom.flush(); | 515 Polymer.dom.flush(); |
| 516 }); | 516 }); |
| 517 | 517 |
| 518 teardown(function() { subentry.remove(); }); | 518 teardown(function() { subentry.remove(); }); |
| 519 | 519 |
| 520 // Test case where 'View' option is tapped. | 520 // Test case where 'View' option is tapped. |
| 521 test('MenuOptions_View', function() { | 521 test('MenuOptions_View', function() { |
| 522 var viewButton = subentry.shadowRoot.querySelector('#view'); | 522 var viewButton = subentry.shadowRoot.querySelector('#view'); |
| 523 MockInteractions.tap(viewButton); | 523 MockInteractions.tap(viewButton); |
| 524 return browserProxy.whenCalled('viewCertificate').then(function(id) { | 524 return browserProxy.whenCalled('viewCertificate').then(function(id) { |
| 525 assertEquals(subentry.model.id, id); | 525 assertEquals(subentry.model.id, id); |
| 526 }); | 526 }); |
| 527 }); | 527 }); |
| 528 | 528 |
| 529 // Test that the 'Edit' option is only shown when appropriate and that | 529 // Test that the 'Edit' option is only shown when appropriate and that |
| 530 // once tapped the correct event is fired. | 530 // once tapped the correct event is fired. |
| 531 test('MenuOptions_Edit', function() { | 531 test('MenuOptions_Edit', function() { |
| 532 var editButton = subentry.shadowRoot.querySelector('#edit'); | 532 var editButton = subentry.shadowRoot.querySelector('#edit'); |
| 533 assertTrue(!!editButton); | 533 assertTrue(!!editButton); |
| 534 // Should be disabled for any certificate type other than | 534 // Should be disabled for any certificate type other than |
| 535 // CertificateType.CA | 535 // CertificateType.CA |
| 536 assertTrue(editButton.hidden); | 536 assertTrue(editButton.hidden); |
| 537 subentry.certificateType = settings.CertificateType.CA; | 537 subentry.certificateType = CertificateType.CA; |
| 538 assertFalse(editButton.hidden); | 538 assertFalse(editButton.hidden); |
| 539 | 539 |
| 540 // Should be disabled if |policy| is true. | 540 // Should be disabled if |policy| is true. |
| 541 var model = createSampleCertificateSubnode(); | 541 var model = createSampleCertificateSubnode(); |
| 542 model.policy = true; | 542 model.policy = true; |
| 543 subentry.model = model; | 543 subentry.model = model; |
| 544 assertTrue(editButton.hidden); | 544 assertTrue(editButton.hidden); |
| 545 | 545 |
| 546 subentry.model = createSampleCertificateSubnode(); | 546 subentry.model = createSampleCertificateSubnode(); |
| 547 var waitForActionEvent = actionEventToPromise(); | 547 var waitForActionEvent = actionEventToPromise(); |
| 548 MockInteractions.tap(editButton); | 548 MockInteractions.tap(editButton); |
| 549 return waitForActionEvent.then(function(event) { | 549 return waitForActionEvent.then(function(event) { |
| 550 var detail = /** @type {!CertificateActionEventDetail} */ ( | 550 var detail = /** @type {!CertificateActionEventDetail} */ ( |
| 551 event.detail); | 551 event.detail); |
| 552 assertEquals(settings.CertificateAction.EDIT, detail.action); | 552 assertEquals(CertificateAction.EDIT, detail.action); |
| 553 assertEquals(subentry.model.id, detail.subnode.id); | 553 assertEquals(subentry.model.id, detail.subnode.id); |
| 554 assertEquals(subentry.certificateType, detail.certificateType); | 554 assertEquals(subentry.certificateType, detail.certificateType); |
| 555 }); | 555 }); |
| 556 }); | 556 }); |
| 557 | 557 |
| 558 // Test that the 'Delete' option is only shown when appropriate and that | 558 // Test that the 'Delete' option is only shown when appropriate and that |
| 559 // once tapped the correct event is fired. | 559 // once tapped the correct event is fired. |
| 560 test('MenuOptions_Delete', function() { | 560 test('MenuOptions_Delete', function() { |
| 561 var deleteButton = subentry.shadowRoot.querySelector('#delete'); | 561 var deleteButton = subentry.shadowRoot.querySelector('#delete'); |
| 562 assertTrue(!!deleteButton); | 562 assertTrue(!!deleteButton); |
| 563 | 563 |
| 564 // Should be disabled when 'model.readonly' is true. | 564 // Should be disabled when 'model.readonly' is true. |
| 565 var model = createSampleCertificateSubnode(); | 565 var model = createSampleCertificateSubnode(); |
| 566 model.readonly = true; | 566 model.readonly = true; |
| 567 subentry.model = model; | 567 subentry.model = model; |
| 568 assertTrue(deleteButton.hidden); | 568 assertTrue(deleteButton.hidden); |
| 569 | 569 |
| 570 // Should be disabled when 'model.policy' is true. | 570 // Should be disabled when 'model.policy' is true. |
| 571 var model = createSampleCertificateSubnode(); | 571 var model = createSampleCertificateSubnode(); |
| 572 model.policy = true; | 572 model.policy = true; |
| 573 subentry.model = model; | 573 subentry.model = model; |
| 574 assertTrue(deleteButton.hidden); | 574 assertTrue(deleteButton.hidden); |
| 575 | 575 |
| 576 subentry.model = createSampleCertificateSubnode(); | 576 subentry.model = createSampleCertificateSubnode(); |
| 577 var waitForActionEvent = actionEventToPromise(); | 577 var waitForActionEvent = actionEventToPromise(); |
| 578 MockInteractions.tap(deleteButton); | 578 MockInteractions.tap(deleteButton); |
| 579 return waitForActionEvent.then(function(event) { | 579 return waitForActionEvent.then(function(event) { |
| 580 var detail = /** @type {!CertificateActionEventDetail} */ ( | 580 var detail = /** @type {!CertificateActionEventDetail} */ ( |
| 581 event.detail); | 581 event.detail); |
| 582 assertEquals(settings.CertificateAction.DELETE, detail.action); | 582 assertEquals(CertificateAction.DELETE, detail.action); |
| 583 assertEquals(subentry.model.id, detail.subnode.id); | 583 assertEquals(subentry.model.id, detail.subnode.id); |
| 584 }); | 584 }); |
| 585 }); | 585 }); |
| 586 | 586 |
| 587 // Test that the 'Export' option is always shown when the certificate type | 587 // Test that the 'Export' option is always shown when the certificate type |
| 588 // is not PERSONAL and that once tapped the correct event is fired. | 588 // is not PERSONAL and that once tapped the correct event is fired. |
| 589 test('MenuOptions_Export', function() { | 589 test('MenuOptions_Export', function() { |
| 590 subentry.certificateType = settings.CertificateType.SERVER; | 590 subentry.certificateType = CertificateType.SERVER; |
| 591 var exportButton = subentry.shadowRoot.querySelector('#export'); | 591 var exportButton = subentry.shadowRoot.querySelector('#export'); |
| 592 assertTrue(!!exportButton); | 592 assertTrue(!!exportButton); |
| 593 assertFalse(exportButton.hidden); | 593 assertFalse(exportButton.hidden); |
| 594 MockInteractions.tap(exportButton); | 594 MockInteractions.tap(exportButton); |
| 595 return browserProxy.whenCalled('exportCertificate').then(function(id) { | 595 return browserProxy.whenCalled('exportCertificate').then(function(id) { |
| 596 assertEquals(subentry.model.id, id); | 596 assertEquals(subentry.model.id, id); |
| 597 }); | 597 }); |
| 598 }); | 598 }); |
| 599 | 599 |
| 600 // Test case of exporting a PERSONAL certificate. | 600 // Test case of exporting a PERSONAL certificate. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 617 assertEquals(subentry.model.id, id); | 617 assertEquals(subentry.model.id, id); |
| 618 | 618 |
| 619 // A promise firing once |settings.CertificateActionEvent| is | 619 // A promise firing once |settings.CertificateActionEvent| is |
| 620 // fired. | 620 // fired. |
| 621 return waitForActionEvent; | 621 return waitForActionEvent; |
| 622 }).then( | 622 }).then( |
| 623 function(event) { | 623 function(event) { |
| 624 var detail = /** @type {!CertificateActionEventDetail} */ ( | 624 var detail = /** @type {!CertificateActionEventDetail} */ ( |
| 625 event.detail); | 625 event.detail); |
| 626 assertEquals( | 626 assertEquals( |
| 627 settings.CertificateAction.EXPORT_PERSONAL, | 627 CertificateAction.EXPORT_PERSONAL, |
| 628 detail.action); | 628 detail.action); |
| 629 assertEquals(subentry.model.id, detail.subnode.id); | 629 assertEquals(subentry.model.id, detail.subnode.id); |
| 630 }); | 630 }); |
| 631 }); | 631 }); |
| 632 }); | 632 }); |
| 633 } | 633 } |
| 634 | 634 |
| 635 function registerPageTests() { | 635 function registerPageTests() { |
| 636 /** @type {?SettingsCertificateManagerPageElement} */ | 636 /** @type {?SettingsCertificateManagerPageElement} */ |
| 637 var page = null; | 637 var page = null; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 assertFalse(!!page.shadowRoot.querySelector(dialogTagName)); | 718 assertFalse(!!page.shadowRoot.querySelector(dialogTagName)); |
| 719 page.fire(settings.CertificateActionEvent, eventDetail); | 719 page.fire(settings.CertificateActionEvent, eventDetail); |
| 720 Polymer.dom.flush(); | 720 Polymer.dom.flush(); |
| 721 assertTrue(!!page.shadowRoot.querySelector(dialogTagName)); | 721 assertTrue(!!page.shadowRoot.querySelector(dialogTagName)); |
| 722 } | 722 } |
| 723 | 723 |
| 724 test('OpensDialog_DeleteConfirmation', function() { | 724 test('OpensDialog_DeleteConfirmation', function() { |
| 725 testDialogOpensOnAction( | 725 testDialogOpensOnAction( |
| 726 'settings-certificate-delete-confirmation-dialog', | 726 'settings-certificate-delete-confirmation-dialog', |
| 727 /** @type {!CertificateActionEventDetail} */ ({ | 727 /** @type {!CertificateActionEventDetail} */ ({ |
| 728 action: settings.CertificateAction.DELETE, | 728 action: CertificateAction.DELETE, |
| 729 subnode: createSampleCertificateSubnode(), | 729 subnode: createSampleCertificateSubnode(), |
| 730 certificateType: settings.CertificateType.PERSONAL | 730 certificateType: CertificateType.PERSONAL |
| 731 })); | 731 })); |
| 732 }); | 732 }); |
| 733 | 733 |
| 734 test('OpensDialog_PasswordEncryption', function() { | 734 test('OpensDialog_PasswordEncryption', function() { |
| 735 testDialogOpensOnAction( | 735 testDialogOpensOnAction( |
| 736 'settings-certificate-password-encryption-dialog', | 736 'settings-certificate-password-encryption-dialog', |
| 737 /** @type {!CertificateActionEventDetail} */ ({ | 737 /** @type {!CertificateActionEventDetail} */ ({ |
| 738 action: settings.CertificateAction.EXPORT_PERSONAL, | 738 action: CertificateAction.EXPORT_PERSONAL, |
| 739 subnode: createSampleCertificateSubnode(), | 739 subnode: createSampleCertificateSubnode(), |
| 740 certificateType: settings.CertificateType.PERSONAL | 740 certificateType: CertificateType.PERSONAL |
| 741 })); | 741 })); |
| 742 }); | 742 }); |
| 743 | 743 |
| 744 test('OpensDialog_PasswordDecryption', function() { | 744 test('OpensDialog_PasswordDecryption', function() { |
| 745 testDialogOpensOnAction( | 745 testDialogOpensOnAction( |
| 746 'settings-certificate-password-decryption-dialog', | 746 'settings-certificate-password-decryption-dialog', |
| 747 /** @type {!CertificateActionEventDetail} */ ({ | 747 /** @type {!CertificateActionEventDetail} */ ({ |
| 748 action: settings.CertificateAction.IMPORT, | 748 action: CertificateAction.IMPORT, |
| 749 subnode: createSampleCertificateSubnode(), | 749 subnode: createSampleCertificateSubnode(), |
| 750 certificateType: settings.CertificateType.PERSONAL | 750 certificateType: CertificateType.PERSONAL |
| 751 })); | 751 })); |
| 752 }); | 752 }); |
| 753 | 753 |
| 754 test('OpensDialog_CaTrustEdit', function() { | 754 test('OpensDialog_CaTrustEdit', function() { |
| 755 testDialogOpensOnAction( | 755 testDialogOpensOnAction( |
| 756 'settings-ca-trust-edit-dialog', | 756 'settings-ca-trust-edit-dialog', |
| 757 /** @type {!CertificateActionEventDetail} */ ({ | 757 /** @type {!CertificateActionEventDetail} */ ({ |
| 758 action: settings.CertificateAction.EDIT, | 758 action: CertificateAction.EDIT, |
| 759 subnode: createSampleCertificateSubnode(), | 759 subnode: createSampleCertificateSubnode(), |
| 760 certificateType: settings.CertificateType.CA | 760 certificateType: CertificateType.CA |
| 761 })); | 761 })); |
| 762 }); | 762 }); |
| 763 | 763 |
| 764 test('OpensDialog_CaTrustImport', function() { | 764 test('OpensDialog_CaTrustImport', function() { |
| 765 testDialogOpensOnAction( | 765 testDialogOpensOnAction( |
| 766 'settings-ca-trust-edit-dialog', | 766 'settings-ca-trust-edit-dialog', |
| 767 /** @type {!CertificateActionEventDetail} */ ({ | 767 /** @type {!CertificateActionEventDetail} */ ({ |
| 768 action: settings.CertificateAction.IMPORT, | 768 action: CertificateAction.IMPORT, |
| 769 subnode: {name: 'Dummy Certificate Name', id: null}, | 769 subnode: {name: 'Dummy Certificate Name', id: null}, |
| 770 certificateType: settings.CertificateType.CA | 770 certificateType: CertificateType.CA |
| 771 })); | 771 })); |
| 772 }); | 772 }); |
| 773 }); | 773 }); |
| 774 } | 774 } |
| 775 | 775 |
| 776 function registerCertificateListTests() { | 776 function registerCertificateListTests() { |
| 777 /** @type {?SettingsCertificateListElement} */ | 777 /** @type {?SettingsCertificateListElement} */ |
| 778 var element = null; | 778 var element = null; |
| 779 | 779 |
| 780 /** @type {?TestCertificatesBrowserProxy} */ | 780 /** @type {?TestCertificatesBrowserProxy} */ |
| 781 var browserProxy = null; | 781 var browserProxy = null; |
| 782 | 782 |
| 783 suite('CertificateListTests', function() { | 783 suite('CertificateListTests', function() { |
| 784 setup(function() { | 784 setup(function() { |
| 785 browserProxy = new TestCertificatesBrowserProxy(); | 785 browserProxy = new TestCertificatesBrowserProxy(); |
| 786 settings.CertificatesBrowserProxyImpl.instance_ = browserProxy; | 786 settings.CertificatesBrowserProxyImpl.instance_ = browserProxy; |
| 787 PolymerTest.clearBody(); | 787 PolymerTest.clearBody(); |
| 788 element = document.createElement('settings-certificate-list'); | 788 element = document.createElement('settings-certificate-list'); |
| 789 document.body.appendChild(element); | 789 document.body.appendChild(element); |
| 790 }); | 790 }); |
| 791 | 791 |
| 792 teardown(function() { element.remove(); }); | 792 teardown(function() { element.remove(); }); |
| 793 | 793 |
| 794 /** | 794 /** |
| 795 * Tests the "Import" button functionality. | 795 * Tests the "Import" button functionality. |
| 796 * @param {!settings.CertificateType} certificateType | 796 * @param {!CertificateType} certificateType |
| 797 * @param {string} proxyMethodName The name of the proxy method expected | 797 * @param {string} proxyMethodName The name of the proxy method expected |
| 798 * to be called. | 798 * to be called. |
| 799 * @param {boolean} actionEventExpected Whether a | 799 * @param {boolean} actionEventExpected Whether a |
| 800 * settings.CertificateActionEvent is expected to fire as a result | 800 * settings.CertificateActionEvent is expected to fire as a result |
| 801 * tapping the Import button. | 801 * tapping the Import button. |
| 802 */ | 802 */ |
| 803 function testImportForCertificateType( | 803 function testImportForCertificateType( |
| 804 certificateType, proxyMethodName, actionEventExpected) { | 804 certificateType, proxyMethodName, actionEventExpected) { |
| 805 element.certificateType = certificateType | 805 element.certificateType = certificateType |
| 806 Polymer.dom.flush(); | 806 Polymer.dom.flush(); |
| 807 | 807 |
| 808 var importButton = element.$$('paper-button'); | 808 var importButton = element.$$('paper-button'); |
| 809 assertTrue(!!importButton); | 809 assertTrue(!!importButton); |
| 810 | 810 |
| 811 var waitForActionEvent = actionEventExpected ? | 811 var waitForActionEvent = actionEventExpected ? |
| 812 eventToPromise(settings.CertificateActionEvent, element) : | 812 eventToPromise(settings.CertificateActionEvent, element) : |
| 813 Promise.resolve(null); | 813 Promise.resolve(null); |
| 814 | 814 |
| 815 MockInteractions.tap(importButton); | 815 MockInteractions.tap(importButton); |
| 816 return browserProxy.whenCalled(proxyMethodName).then(function() { | 816 return browserProxy.whenCalled(proxyMethodName).then(function() { |
| 817 return waitForActionEvent; | 817 return waitForActionEvent; |
| 818 }).then(function(event) { | 818 }).then(function(event) { |
| 819 if (actionEventExpected) { | 819 if (actionEventExpected) { |
| 820 assertEquals( | 820 assertEquals( |
| 821 settings.CertificateAction.IMPORT, event.detail.action); | 821 CertificateAction.IMPORT, event.detail.action); |
| 822 assertEquals(certificateType, event.detail.certificateType); | 822 assertEquals(certificateType, event.detail.certificateType); |
| 823 } | 823 } |
| 824 }); | 824 }); |
| 825 } | 825 } |
| 826 | 826 |
| 827 test('ImportButton_Personal', function() { | 827 test('ImportButton_Personal', function() { |
| 828 return testImportForCertificateType( | 828 return testImportForCertificateType( |
| 829 settings.CertificateType.PERSONAL, | 829 CertificateType.PERSONAL, |
| 830 'importPersonalCertificate', true); | 830 'importPersonalCertificate', true); |
| 831 }); | 831 }); |
| 832 | 832 |
| 833 test('ImportButton_Server', function() { | 833 test('ImportButton_Server', function() { |
| 834 return testImportForCertificateType( | 834 return testImportForCertificateType( |
| 835 settings.CertificateType.SERVER, 'importServerCertificate', | 835 CertificateType.SERVER, 'importServerCertificate', |
| 836 false); | 836 false); |
| 837 }); | 837 }); |
| 838 | 838 |
| 839 test('ImportButton_CA', function() { | 839 test('ImportButton_CA', function() { |
| 840 return testImportForCertificateType( | 840 return testImportForCertificateType( |
| 841 settings.CertificateType.CA, 'importCaCertificate', true); | 841 CertificateType.CA, 'importCaCertificate', true); |
| 842 }); | 842 }); |
| 843 }); | 843 }); |
| 844 } | 844 } |
| 845 | 845 |
| 846 return { | 846 return { |
| 847 registerTests: function() { | 847 registerTests: function() { |
| 848 registerCaTrustEditDialogTests(); | 848 registerCaTrustEditDialogTests(); |
| 849 registerDeleteDialogTests(); | 849 registerDeleteDialogTests(); |
| 850 registerPasswordEncryptDialogTests(); | 850 registerPasswordEncryptDialogTests(); |
| 851 registerPasswordDecryptDialogTests(); | 851 registerPasswordDecryptDialogTests(); |
| 852 registerPageTests(); | 852 registerPageTests(); |
| 853 registerCertificateSubentryTests(); | 853 registerCertificateSubentryTests(); |
| 854 registerCertificateListTests(); | 854 registerCertificateListTests(); |
| 855 }, | 855 }, |
| 856 }; | 856 }; |
| 857 }); | 857 }); |
| OLD | NEW |