15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h"
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/error_utils.h"
10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "extensions/common/manifest_constants.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::ErrorUtils;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using extensions::Extension;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace errors = extensions::manifest_errors;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(ChromeManifestTest, AppWebUrls) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Testcase testcases[] = {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Testcase("web_urls_wrong_type.json", errors::kInvalidWebURLs),
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Testcase("web_urls_invalid_1.json",
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)             ErrorUtils::FormatErrorMessage(
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kInvalidWebURL,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 base::IntToString(0),
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kExpectString)),
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Testcase("web_urls_invalid_2.json",
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)             ErrorUtils::FormatErrorMessage(
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kInvalidWebURL,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 base::IntToString(0),
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 URLPattern::GetParseResultString(
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR))),
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Testcase("web_urls_invalid_3.json",
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)             ErrorUtils::FormatErrorMessage(
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kInvalidWebURL,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 base::IntToString(0),
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kNoWildCardsInPaths)),
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Testcase("web_urls_invalid_4.json",
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)             ErrorUtils::FormatErrorMessage(
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kInvalidWebURL,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 base::IntToString(0),
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kCannotClaimAllURLsInExtent)),
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Testcase("web_urls_invalid_5.json",
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)             ErrorUtils::FormatErrorMessage(
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kInvalidWebURL,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 base::IntToString(1),
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 errors::kCannotClaimAllHostsInExtent))
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RunTestcases(testcases, arraysize(testcases),
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               EXPECT_TYPE_ERROR);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LoadAndExpectSuccess("web_urls_has_port.json");
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<Extension> extension(
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LoadAndExpectSuccess("web_urls_default.json"));
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1u, extension->web_extent().patterns().size());
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("*://www.google.com/*",
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            extension->web_extent().patterns().begin()->GetAsString());
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
59