1- import { containsExtensionUrl , EXTENSION_PREFIXES , isUnsupportedExtensionEnvironment } from './extensionUtils'
1+ import {
2+ containsExtensionUrl ,
3+ EXTENSION_PREFIXES ,
4+ extractExtensionUrlFromStack ,
5+ isUnsupportedExtensionEnvironment ,
6+ } from './extensionUtils'
27
38describe ( 'containsExtensionUrl' , ( ) => {
49 it ( 'should return true if string contains an extension URL' , ( ) => {
@@ -13,7 +18,7 @@ describe('containsExtensionUrl', () => {
1318 } )
1419} )
1520
16- describe ( 'testIsUnsupportedExtensionEnvironment ' , ( ) => {
21+ describe ( 'isUnsupportedExtensionEnvironment ' , ( ) => {
1722 it ( 'should return true when window location is a regular URL and error stack contains extension URL' , ( ) => {
1823 expect (
1924 isUnsupportedExtensionEnvironment ( 'https://example.com' , 'Error: at chrome-extension://abcdefg/content.js:10:15' )
@@ -46,19 +51,28 @@ describe('testIsUnsupportedExtensionEnvironment', () => {
4651 } )
4752 } )
4853
49- it ( 'should handle case when Error.stack is undefined' , ( ) => {
50- const mockError = new Error ( )
51- mockError . stack = undefined
52- spyOn ( window , 'Error' ) . and . returnValue ( mockError )
53-
54+ it ( 'should handle case when stack trace is undefined' , ( ) => {
5455 expect ( isUnsupportedExtensionEnvironment ( 'https://example.com' ) ) . toBe ( false )
5556 } )
5657
5758 it ( 'should handle extension stack trace' , ( ) => {
58- const mockError = new Error ( )
59- mockError . stack = 'Error: at chrome-extension://abcdefg/content.js:10:15'
60- spyOn ( window , 'Error' ) . and . returnValue ( mockError )
59+ expect (
60+ isUnsupportedExtensionEnvironment ( 'https://example.com' , 'Error: at chrome-extension://abcdefg/content.js:10:15' )
61+ ) . toBe ( true )
62+ } )
63+ } )
64+
65+ describe ( 'extractExtensionUrlFromStack' , ( ) => {
66+ it ( 'should extract extension URL from stack trace' , ( ) => {
67+ const stack = `Error
68+ at foo (<anonymous>:549:44)
69+ at bar (<anonymous>:701:91)
70+ at e.init (chrome-extension://boceobohkgenpcpogecpjlnmnfbdigda/content-script-main.js:1:1009)`
71+ expect ( extractExtensionUrlFromStack ( stack ) ) . toBe ( 'chrome-extension://boceobohkgenpcpogecpjlnmnfbdigda' )
72+ } )
6173
62- expect ( isUnsupportedExtensionEnvironment ( 'https://example.com' ) ) . toBe ( true )
74+ it ( 'should return undefined when no extension URL found' , ( ) => {
75+ const stack = 'Error at https://example.com/script.js:10:15'
76+ expect ( extractExtensionUrlFromStack ( stack ) ) . toBeUndefined ( )
6377 } )
6478} )
0 commit comments