chromium/chrome/test/data/extensions/api_test/webstore_private/accepted.js

// Copyright 2011 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Tests where the beginInstallWithManifest3 dialog would be auto-accepted
// (including a few cases where this does not matter).

var tests = [

  function completeBeforeBegin() {
    var expectedError = extensionId +
        " does not match a previous call to beginInstallWithManifest3";
    chrome.webstorePrivate.completeInstall(extensionId,
                                           callbackFail(expectedError));
  },

  function invalidID() {
    var expectedError = "Invalid id";
    var id = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
    chrome.webstorePrivate.beginInstallWithManifest3(
        { 'id':id, 'manifest':getManifest() }, callbackFail(expectedError));
  },

  function missingVersion() {
    var manifestObj = JSON.parse(getManifest());
    delete manifestObj["version"];
    var manifest = JSON.stringify(manifestObj);
    chrome.webstorePrivate.beginInstallWithManifest3(
        { 'id':extensionId, 'manifest': manifest },
        callbackFail("Invalid manifest", function(result) {
      assertEq("manifest_error", result);
    }));
  },

  function successfulInstall() {
    // See things through all the way to a successful install.
    listenOnce(chrome.management.onInstalled, function(info) {
      assertEq(info.id, extensionId);
    });

    var manifest = getManifest();
    installAndCleanUp(
        {'id': extensionId, 'iconUrl': 'extension/icon.png',
         'manifest': manifest},
         function() {}
    );
  },

  function duplicateInstall() {
    // See things through all the way to a successful install.
    listenOnce(chrome.management.onInstalled, function(info) {
      assertEq(info.id, extensionId);
    });

    var manifest = getManifest();
    iconUrl = 'extension/icon.png';
    installAndCleanUp(
        {'id': extensionId, 'iconUrl': iconUrl, 'manifest': manifest},
        function() {
          // Kick off a serial second install. This should fail.
          var expectedError = "This item is already installed";
          chrome.webstorePrivate.beginInstallWithManifest3(
              {'id': extensionId, 'iconUrl': iconUrl, 'manifest': manifest},
              callbackFail(expectedError));
        });

    // Kick off a simultaneous second install. This should fail.
    var expectedError = "This item is already installed";
    chrome.webstorePrivate.beginInstallWithManifest3(
        {'id': extensionId, 'iconUrl': iconUrl, 'manifest': manifest},
        callbackFail(expectedError));
  }
];

runTests(tests);