44
55const $ = require ( 'jquery' ) ;
66const assert = require ( 'chai' ) . assert ;
7+ const Broker = require ( 'models/auth_brokers/base' ) ;
78const Metrics = require ( 'lib/metrics' ) ;
89const Notifier = require ( 'lib/channels/notifier' ) ;
10+ const SentryMetrics = require ( 'lib/sentry' ) ;
911const sinon = require ( 'sinon' ) ;
1012const TestHelpers = require ( '../../../lib/helpers' ) ;
1113const User = require ( 'models/user' ) ;
1214const View = require ( 'views/settings/two_step_authentication' ) ;
1315
1416describe ( 'views/settings/two_step_authentication' , ( ) => {
1517 let account ;
18+ let broker ;
1619 let email ;
1720 let metrics ;
1821 let notifier ;
1922 let featureEnabled ;
2023 let hasToken ;
24+ let inTotpExperiment ;
25+ let sentryMetrics ;
2126 let validCode ;
2227 const UID = '123' ;
2328 let user ;
2429 let view ;
2530
2631 function initView ( ) {
2732 view = new View ( {
33+ broker : broker ,
2834 metrics : metrics ,
2935 notifier : notifier ,
3036 user : user
3137 } ) ;
3238
33- sinon . stub ( view , '_isPanelEnabled' ) . callsFake ( ( ) => featureEnabled ) ;
3439 sinon . stub ( view , 'setupSessionGateIfRequired' ) . callsFake ( ( ) => Promise . resolve ( featureEnabled ) ) ;
40+ sinon . stub ( view , 'isInTotpExperiment' ) . callsFake ( ( ) => inTotpExperiment ) ;
3541 sinon . stub ( view , 'getSignedInAccount' ) . callsFake ( ( ) => account ) ;
3642 sinon . spy ( view , 'remove' ) ;
3743
@@ -40,9 +46,11 @@ describe('views/settings/two_step_authentication', () => {
4046 }
4147
4248 beforeEach ( ( ) => {
49+ broker = new Broker ( ) ;
4350 email = TestHelpers . createEmail ( ) ;
4451 notifier = new Notifier ( ) ;
45- metrics = new Metrics ( { notifier} ) ;
52+ sentryMetrics = new SentryMetrics ( ) ;
53+ metrics = new Metrics ( { notifier, sentryMetrics} ) ;
4654 user = new User ( ) ;
4755 account = user . initAccount ( {
4856 email : email ,
@@ -70,6 +78,7 @@ describe('views/settings/two_step_authentication', () => {
7078
7179 featureEnabled = true ;
7280 hasToken = true ;
81+ inTotpExperiment = true ;
7382 } ) ;
7483
7584 afterEach ( ( ) => {
@@ -80,21 +89,42 @@ describe('views/settings/two_step_authentication', () => {
8089
8190 describe ( 'feature disabled' , ( ) => {
8291 beforeEach ( ( ) => {
83- featureEnabled = false ;
92+ inTotpExperiment = false ;
8493 return initView ( ) ;
8594 } ) ;
8695
87- it ( 'should remove panel if `showTwoStepAuthentication` query is not specified ' , ( ) => {
96+ it ( 'should not display panel if `isInTotpExperiment` is false ' , ( ) => {
8897 assert . equal ( view . remove . callCount , 1 ) ;
8998 } ) ;
9099 } ) ;
91100
92101 describe ( 'feature enabled' , ( ) => {
93102 beforeEach ( ( ) => {
94- featureEnabled = true ;
95103 return initView ( ) ;
96104 } ) ;
97105
106+ describe ( 'should show panel when broker capability `showTwoStepAuthentication` is true' , ( ) => {
107+ beforeEach ( ( ) => {
108+ view . broker . setCapability ( 'showTwoStepAuthentication' , true ) ;
109+ return initView ( ) ;
110+ } ) ;
111+
112+ it ( 'should show panel when broker has capability' , ( ) => {
113+ assert . equal ( view . remove . callCount , 0 ) ;
114+ } ) ;
115+ } ) ;
116+
117+ describe ( 'should show panel when `inTotpExperiment` is true' , ( ) => {
118+ beforeEach ( ( ) => {
119+ inTotpExperiment = true ;
120+ return initView ( ) ;
121+ } ) ;
122+
123+ it ( 'should show panel when in experiment' , ( ) => {
124+ assert . equal ( view . remove . callCount , 0 ) ;
125+ } ) ;
126+ } ) ;
127+
98128 describe ( 'should show token status' , ( ) => {
99129 beforeEach ( ( ) => {
100130 hasToken = true ;
0 commit comments