summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_copy_params.js
blob: 1cb6f66200f70fb233ad95edef1b99203caeb00e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

/**
 * Tests whether copying a request item's parameters works.
 */

add_task(function* () {
  let { tab, monitor } = yield initNetMonitor(PARAMS_URL);
  info("Starting test... ");

  let { NetMonitorView } = monitor.panelWin;
  let { RequestsMenu } = NetMonitorView;

  RequestsMenu.lazyUpdate = false;

  let wait = waitForNetworkEvents(monitor, 1, 6);
  yield ContentTask.spawn(tab.linkedBrowser, {}, function* () {
    content.wrappedJSObject.performRequests();
  });
  yield wait;

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(0);
  yield testCopyUrlParamsHidden(false);
  yield testCopyUrlParams("a");
  yield testCopyPostDataHidden(false);
  yield testCopyPostData("{ \"foo\": \"bar\" }");

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(1);
  yield testCopyUrlParamsHidden(false);
  yield testCopyUrlParams("a=b");
  yield testCopyPostDataHidden(false);
  yield testCopyPostData("{ \"foo\": \"bar\" }");

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(2);
  yield testCopyUrlParamsHidden(false);
  yield testCopyUrlParams("a=b");
  yield testCopyPostDataHidden(false);
  yield testCopyPostData("foo=bar");

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(3);
  yield testCopyUrlParamsHidden(false);
  yield testCopyUrlParams("a");
  yield testCopyPostDataHidden(false);
  yield testCopyPostData("{ \"foo\": \"bar\" }");

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(4);
  yield testCopyUrlParamsHidden(false);
  yield testCopyUrlParams("a=b");
  yield testCopyPostDataHidden(false);
  yield testCopyPostData("{ \"foo\": \"bar\" }");

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(5);
  yield testCopyUrlParamsHidden(false);
  yield testCopyUrlParams("a=b");
  yield testCopyPostDataHidden(false);
  yield testCopyPostData("?foo=bar");

  RequestsMenu.selectedItem = RequestsMenu.getItemAtIndex(6);
  yield testCopyUrlParamsHidden(true);
  yield testCopyPostDataHidden(true);

  return teardown(monitor);

  function testCopyUrlParamsHidden(hidden) {
    let allMenuItems = openContextMenuAndGetAllItems(NetMonitorView);
    let copyUrlParamsNode = allMenuItems.find(item =>
      item.id === "request-menu-context-copy-url-params");
    is(copyUrlParamsNode.visible, !hidden,
      "The \"Copy URL Parameters\" context menu item should" + (hidden ? " " : " not ") +
        "be hidden.");
  }

  function* testCopyUrlParams(queryString) {
    yield waitForClipboardPromise(function setup() {
      RequestsMenu.contextMenu.copyUrlParams();
    }, queryString);
    ok(true, "The url query string copied from the selected item is correct.");
  }

  function testCopyPostDataHidden(hidden) {
    let allMenuItems = openContextMenuAndGetAllItems(NetMonitorView);
    let copyPostDataNode = allMenuItems.find(item =>
      item.id === "request-menu-context-copy-post-data");
    is(copyPostDataNode.visible, !hidden,
      "The \"Copy POST Data\" context menu item should" + (hidden ? " " : " not ") +
        "be hidden.");
  }

  function* testCopyPostData(postData) {
    yield waitForClipboardPromise(function setup() {
      RequestsMenu.contextMenu.copyPostData();
    }, postData);
    ok(true, "The post data string copied from the selected item is correct.");
  }
});