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

Side by Side Diff: third_party/WebKit/Source/core/frame/csp/MediaListDirectiveTest.cpp

Issue 2541843002: Part 5.1: Is policy list subsumed under subsuming policy? (Closed)
Patch Set: Created 4 years 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "core/frame/csp/MediaListDirective.h"
6
7 #include "core/frame/csp/ContentSecurityPolicy.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace blink {
11
12 class MediaListDirectiveTest : public ::testing::Test {
13 public:
14 MediaListDirectiveTest() : csp(ContentSecurityPolicy::create()) {}
15
16 protected:
17 Persistent<ContentSecurityPolicy> csp;
18 };
19
20 TEST_F(MediaListDirectiveTest, GetIntersect) {
21 MediaListDirective A(
22 "plugin-types",
23 "application/x-shockwave-flash application/pdf text/plain", csp.get());
Mike West 2016/12/06 13:39:07 Can you check that we have a sane behavior when |A
24
25 struct TestCase {
26 const char* policyB;
27 const std::vector<const char*> expected;
28 } cases[] = {
29 {"text/plain", {"text/plain"}},
Mike West 2016/12/06 13:39:07 Can you add an empty list?
30 {"application/pdf", {"application/pdf"}},
31 {"application/x-shockwave-flash", {"application/x-shockwave-flash"}},
32 {"application/x-shockwave-flash text/plain",
Mike West 2016/12/06 13:39:07 Nit: Can you add tests that reverse the order, jus
33 {"application/x-shockwave-flash", "text/plain"}},
34 {"application/pdf text/plain", {"text/plain", "application/pdf"}},
35 {"application/x-shockwave-flash application/pdf text/plain",
36 {"application/x-shockwave-flash", "application/pdf", "text/plain"}},
Mike West 2016/12/06 13:39:07 Can you add some things like `text/`, `text/*`, an
amalika 2016/12/06 13:54:19 Just to make sure: None of these will be valid, ri
37 };
38
39 for (const auto& test : cases) {
40 MediaListDirective B("plugin-types", test.policyB, csp.get());
41
42 HashSet<String> result = A.getIntersect(B.m_pluginTypes);
43 EXPECT_EQ(result.size(), test.expected.size());
44
45 for (const auto& type : test.expected)
46 EXPECT_TRUE(result.contains(type));
47 }
48 }
49
50 TEST_F(MediaListDirectiveTest, Subsumes) {
51 MediaListDirective A(
52 "plugin-types",
53 "application/x-shockwave-flash application/pdf text/plain", csp.get());
Mike West 2016/12/06 13:39:07 Same general comments. Empty lists, wildcards, ord
54
55 struct TestCase {
56 const std::vector<const char*> policiesB;
57 bool subsumed;
58 bool subsumedByEmptyA;
59 } cases[] = {
60 // `A` subsumes `policiesB`.
61 {{""}, true, true},
62 {{"text/plain"}, true, false},
63 {{"application/pdf"}, true, false},
64 {{"application/x-shockwave-flash"}, true, false},
65 {{"application/x-shockwave-flash text/plain"}, true, false},
66 {{"application/pdf text/plain"}, true, false},
67 {{"application/x-shockwave-flash text/plain application/pdf"},
68 true,
69 false},
70 {{"application/x-shockwave-flash text "}, true, false},
71 {{"application/x-shockwave-flash text/plain "
72 "application/x-blink-test-plugin",
73 "application/x-shockwave-flash text/plain"},
74 true,
75 false},
76 {{"application/x-shockwave-flash text/plain "
77 "application/x-blink-test-plugin",
78 "text/plain"},
79 true,
80 false},
81 {{"application/x-blink-test-plugin", "text/plain"}, true, true},
82 {{"application/x-shockwave-flash",
83 "text/plain application/x-shockwave-flash"},
84 true,
85 false},
86 {{"application/x-shockwave-flash text/plain",
87 "application/x-blink-test-plugin", "text/plain"},
88 true,
89 true},
90 // `A` does not subsumes `policiesB`.
91 {{}, false, false},
92 {{"application/x-blink-test-plugin"}, false, false},
93 {{"application/x-shockwave-flash text/plain "
94 "application/x-blink-test-plugin"},
95 false,
96 false},
97 {{"application/x-shockwave-flash text application/x-blink-test-plugin"},
98 false,
99 false},
100 {{"application/x-invalid-type text application/"}, false, false},
101 {{"application/x-blink-test-plugin text application/",
102 "application/x-blink-test-plugin"},
103 false,
104 false},
105 };
106
107 MediaListDirective emptyA("plugin-types", "", csp.get());
108 EXPECT_TRUE(emptyA.subsumes({&emptyA}));
109
110 for (const auto& test : cases) {
111 std::vector<MediaListDirective*> policiesB;
112 for (const auto& policy : test.policiesB) {
113 policiesB.push_back(
114 new MediaListDirective("plugin-types", policy, csp.get()));
115 }
116
117 EXPECT_EQ(A.subsumes(policiesB), test.subsumed);
118 EXPECT_EQ(emptyA.subsumes(policiesB), test.subsumedByEmptyA);
119 }
120 }
121
122 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698