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

Unified Diff: third_party/pkg/angular/test/core_dom/cookies_spec.dart

Issue 124053002: Adding Angular and dependent packages for testing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 12 months 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 side-by-side diff with in-line comments
Download patch
Index: third_party/pkg/angular/test/core_dom/cookies_spec.dart
diff --git a/third_party/pkg/angular/test/core_dom/cookies_spec.dart b/third_party/pkg/angular/test/core_dom/cookies_spec.dart
new file mode 100644
index 0000000000000000000000000000000000000000..307a52c6cdc712f3b791103adcafb9ee9c53cd81
--- /dev/null
+++ b/third_party/pkg/angular/test/core_dom/cookies_spec.dart
@@ -0,0 +1,236 @@
+library cookies_spec;
+
+import '../_specs.dart';
+import 'package:angular/core_dom/module.dart';
+
+main() => describe('cookies', () {
+ deleteAllCookies() {
+ var cookies = document.cookie.split(";");
+ var path = window.location.pathname;
+
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = cookies[i];
+ var eqPos = cookie.indexOf("=");
+ var name = eqPos > -1 ? cookie.substring(0, eqPos) : '';
+ var parts = path.split('/');
+ while (!parts.isEmpty) {
+ var joinedParts = parts.join('/');
+ document.cookie = name + "=;path=" + (joinedParts.isEmpty ? '/': joinedParts) +
+ ";expires=Thu, 01 Jan 1970 00:00:00 GMT";
+ parts.removeLast();
+ }
+ }
+ }
+
+ afterEach(() {
+ deleteAllCookies();
+ expect(document.cookie).toEqual('');
+ });
+
+ describe('browser cookies', () {
+ var cookies;
+
+ beforeEach(inject((BrowserCookies iCookies) {
+ deleteAllCookies();
+ expect(document.cookie).toEqual('');
+
+ iCookies.cookiePath = '/';
+ cookies = iCookies;
+ }));
+
+ describe('remove via cookies(cookieName, null)', () {
+
+ it('should remove a cookie when it is present', () {
+ document.cookie = 'foo=bar;path=/';
+
+ cookies['foo'] = null;
+
+ expect(document.cookie).toEqual('');
+ expect(cookies.all).toEqual({});
+ });
+
+
+ it('should do nothing when an nonexisting cookie is being removed', () {
+ cookies['doesntexist'] = null;
+ expect(document.cookie).toEqual('');
+ expect(cookies.all).toEqual({});
+ });
+ });
+
+
+ describe('put via cookies(cookieName, string)', () {
+
+ it('should create and store a cookie', () {
+ cookies['cookieName'] = 'cookie=Value';
+ expect(document.cookie).toEqual('cookieName=cookie%3DValue');
+ expect(cookies.all).toEqual({'cookieName':'cookie=Value'});
+ });
+
+
+ it('should overwrite an existing unsynced cookie', () {
+ document.cookie = "cookie=new;path=/";
+
+ var oldVal = cookies['cookie'] = 'newer';
+
+ expect(document.cookie).toEqual('cookie=newer');
+ expect(cookies.all).toEqual({'cookie':'newer'});
+ expect(oldVal).not.toBe(null);
+ });
+
+ it('should escape both name and value', () {
+ cookies['cookie1='] = 'val;ue';
+ cookies['cookie2=bar;baz'] = 'val=ue';
+
+ var rawCookies = document.cookie.split("; "); //order is not guaranteed, so we need to parse
+ expect(rawCookies.length).toEqual(2);
+ expect(rawCookies).toContain('cookie1%3D=val%3Bue');
+ expect(rawCookies).toContain('cookie2%3Dbar%3Bbaz=val%3Due');
+ });
+
+ it('should log warnings when 4kb per cookie storage limit is reached', () {
+ var i, longVal = '', cookieStr;
+
+ for(i=0; i<4083; i++) {
+ longVal += 'r'; // Can't do + due to dartbug.com/14281
+ }
+
+ cookieStr = document.cookie;
+ cookies['x'] = longVal; //total size 4093-4096, so it should go through
+ expect(document.cookie).not.toEqual(cookieStr);
+ expect(cookies['x']).toEqual(longVal);
+ //expect(logs.warn).toEqual([]);
+
+ var overflow = 'xxxxxxxxxxxxxxxxxxxx';
+ cookies['x'] = longVal + overflow; //total size 4097-4099, a warning should be logged
+ //expect(logs.warn).toEqual(
+ // [[ "Cookie 'x' possibly not set or overflowed because it was too large (4097 > 4096 " +
+ // "bytes)!" ]]);
+ expect(document.cookie).not.toContain(overflow);
+
+ //force browser to dropped a cookie and make sure that the cache is not out of sync
+ cookies['x'] = 'shortVal';
+ expect(cookies['x']).toEqual('shortVal'); //needed to prime the cache
+ cookieStr = document.cookie;
+ cookies['x'] = longVal + longVal + longVal; //should be too long for all browsers
+
+ if (document.cookie != cookieStr) {
+ throw "browser didn't drop long cookie when it was expected. make the " +
+ "cookie in this test longer";
+ }
+
+ expect(cookies['x']).toEqual('shortVal');
+ });
+ });
+
+ xdescribe('put via cookies(cookieName, string), if no <base href> ', () {
+ beforeEach(() {
+ //fakeDocument.basePath = null;
+ });
+
+ it('should default path in cookie to "" (empty string)', () {
+ cookies['cookie'] = 'bender';
+ // This only fails in Safari and IE when cookiePath returns null
+ // Where it now succeeds since baseHref return '' instead of null
+ expect(document.cookie).toEqual('cookie=bender');
+ });
+ });
+
+ describe('get via cookies[cookieName]', () {
+
+ it('should return null for nonexistent cookie', () {
+ expect(cookies['nonexistent']).toBe(null);
+ });
+
+
+ it ('should return a value for an existing cookie', () {
+ document.cookie = "foo=bar=baz;path=/";
+ expect(cookies['foo']).toEqual('bar=baz');
+ });
+
+ it('should return the the first value provided for a cookie', () {
+ // For a cookie that has different values that differ by path, the
+ // value for the most specific path appears first. cookies()
+ // should provide that value for the cookie.
+ document.cookie = 'foo="first"; foo="second"';
+ expect(cookies['foo']).toEqual('"first"');
+ });
+
+ it ('should unescape cookie values that were escaped by puts', () {
+ document.cookie = "cookie2%3Dbar%3Bbaz=val%3Due;path=/";
+ expect(cookies['cookie2=bar;baz']).toEqual('val=ue');
+ });
+
+
+ it('should preserve leading & trailing spaces in names and values', () {
+ cookies[' cookie name '] = ' cookie value ';
+ expect(cookies[' cookie name ']).toEqual(' cookie value ');
+ expect(cookies['cookie name']).toBe(null);
+ });
+ });
+
+
+ describe('getAll via cookies(', () {
+
+ it('should return cookies as hash', () {
+ document.cookie = "foo1=bar1;path=/";
+ document.cookie = "foo2=bar2;path=/";
+ expect(cookies.all).toEqual({'foo1':'bar1', 'foo2':'bar2'});
+ });
+
+
+ it('should return empty hash if no cookies exist', () {
+ expect(cookies.all).toEqual({});
+ });
+ });
+
+
+ it('should pick up external changes made to browser cookies', () {
+ cookies['oatmealCookie'] = 'drool';
+ expect(cookies.all).toEqual({'oatmealCookie':'drool'});
+
+ document.cookie = 'oatmealCookie=changed;path=/';
+ expect(cookies['oatmealCookie']).toEqual('changed');
+ });
+
+
+ it('should initialize cookie cache with existing cookies', () {
+ document.cookie = "existingCookie=existingValue;path=/";
+ expect(cookies.all).toEqual({'existingCookie':'existingValue'});
+ });
+ });
+
+ beforeEach(module((Module module) {
+ var cookies = new BrowserCookies()..cookiePath = '/';
+ module.value(Cookies, new Cookies(cookies));
+ }));
+
+ describe('cookies service', () {
+ var cookiesService;
+ beforeEach(inject((Cookies iCookies) {
+ cookiesService = iCookies;
+ document.cookie = 'oatmealCookie=fresh;path=/';
+ }));
+
+ it('should read cookie', () {
+ expect(cookiesService["oatmealCookie"]).toEqual("fresh");
+ });
+
+ describe("set cookie", () {
+ it('should set new key value pair', () {
+ cookiesService["oven"] = "hot";
+ expect(document.cookie).toContain("oven=hot");
+ });
+
+ it('should override existing value', () {
+ cookiesService["oatmealCookie"] = "stale";
+ expect(document.cookie).toContain("oatmealCookie=stale");
+ });
+ });
+
+ it('should remove cookie', () {
+ cookiesService.remove("oatmealCookie");
+ expect(document.cookie).not.toContain("oatmealCookie");
+ });
+ });
+});
+

Powered by Google App Engine
This is Rietveld 408576698