@@ -1657,6 +1657,128 @@ describe('Database', () => {
1657
1657
expect ( catchedError ) . to . equal ( expectedError ) ;
1658
1658
} ) ;
1659
1659
} ) ;
1660
+
1661
+ describe ( 'getFreeMonitoringStatus' , ( ) => {
1662
+ it ( 'calls serviceProvider.runCommand on the database' , async ( ) => {
1663
+ serviceProvider . runCommand . resolves ( { ok : 1 } ) ;
1664
+ await database . getFreeMonitoringStatus ( ) ;
1665
+
1666
+ expect ( serviceProvider . runCommand ) . to . have . been . calledWith (
1667
+ ADMIN_DB ,
1668
+ {
1669
+ getFreeMonitoringStatus : 1
1670
+ }
1671
+ ) ;
1672
+ } ) ;
1673
+
1674
+ it ( 'returns whatever serviceProvider.runCommand returns' , async ( ) => {
1675
+ const expectedResult = { ok : 1 } ;
1676
+ serviceProvider . runCommand . resolves ( expectedResult ) ;
1677
+ const result = await database . getFreeMonitoringStatus ( ) ;
1678
+ expect ( result ) . to . deep . equal ( expectedResult ) ;
1679
+ } ) ;
1680
+
1681
+ it ( 'throws if serviceProvider.runCommand rejects' , async ( ) => {
1682
+ const expectedError = new Error ( ) ;
1683
+ serviceProvider . runCommand . rejects ( expectedError ) ;
1684
+ const catchedError = await database . getFreeMonitoringStatus ( )
1685
+ . catch ( e => e ) ;
1686
+ expect ( catchedError ) . to . equal ( expectedError ) ;
1687
+ } ) ;
1688
+ } ) ;
1689
+
1690
+ describe ( 'disableFreeMonitoring' , ( ) => {
1691
+ it ( 'calls serviceProvider.runCommand on the database with options' , async ( ) => {
1692
+ serviceProvider . runCommand . resolves ( { ok : 1 } ) ;
1693
+ await database . disableFreeMonitoring ( ) ;
1694
+
1695
+ expect ( serviceProvider . runCommand ) . to . have . been . calledWith (
1696
+ ADMIN_DB ,
1697
+ {
1698
+ setFreeMonitoring : 1 ,
1699
+ action : 'disable'
1700
+ }
1701
+ ) ;
1702
+ } ) ;
1703
+
1704
+ it ( 'returns whatever serviceProvider.runCommand returns' , async ( ) => {
1705
+ const expectedResult = { ok : 1 } ;
1706
+ serviceProvider . runCommand . resolves ( expectedResult ) ;
1707
+ const result = await database . disableFreeMonitoring ( ) ;
1708
+ expect ( result ) . to . deep . equal ( expectedResult ) ;
1709
+ } ) ;
1710
+
1711
+ it ( 'throws if serviceProvider.runCommand rejects' , async ( ) => {
1712
+ const expectedError = new Error ( ) ;
1713
+ serviceProvider . runCommand . rejects ( expectedError ) ;
1714
+ const catchedError = await database . disableFreeMonitoring ( )
1715
+ . catch ( e => e ) ;
1716
+ expect ( catchedError ) . to . equal ( expectedError ) ;
1717
+ } ) ;
1718
+ } ) ;
1719
+
1720
+ describe ( 'enableFreeMonitoring' , ( ) => {
1721
+ it ( 'throws if serviceProvider isMaster is false' , async ( ) => {
1722
+ serviceProvider . runCommand . resolves ( { ismaster : false } ) ;
1723
+ const catchedError = await database . enableFreeMonitoring ( )
1724
+ . catch ( e => e ) ;
1725
+ expect ( catchedError . name ) . to . equal ( 'MongoshInvalidInputError' ) ;
1726
+ } ) ;
1727
+
1728
+ it ( 'calls serviceProvider.runCommand on the database' , async ( ) => {
1729
+ serviceProvider . runCommand . onCall ( 0 ) . resolves ( { ismaster : true } ) ;
1730
+ serviceProvider . runCommand . onCall ( 1 ) . resolves ( { ok : 1 , state : 'enabled' } ) ;
1731
+ await database . enableFreeMonitoring ( ) ;
1732
+
1733
+ expect ( serviceProvider . runCommand ) . to . have . been . calledWith (
1734
+ ADMIN_DB ,
1735
+ {
1736
+ setFreeMonitoring : 1 ,
1737
+ action : 'enable'
1738
+ }
1739
+ ) ;
1740
+ } ) ;
1741
+
1742
+ it ( 'returns whatever serviceProvider.runCommand returns if enabled' , async ( ) => {
1743
+ const expectedResult = { ok : 1 , state : 'enabled' } ;
1744
+ serviceProvider . runCommand . onCall ( 0 ) . resolves ( { ismaster : true } ) ;
1745
+ serviceProvider . runCommand . onCall ( 1 ) . resolves ( expectedResult ) ;
1746
+ const result = await database . enableFreeMonitoring ( ) ;
1747
+ expect ( result ) . to . deep . equal ( expectedResult ) ;
1748
+ } ) ;
1749
+ it ( 'returns warning if not enabled' , async ( ) => {
1750
+ serviceProvider . runCommand . onCall ( 0 ) . resolves ( { ismaster : true } ) ;
1751
+ serviceProvider . runCommand . onCall ( 1 ) . resolves ( { ok : 1 , enabled : false } ) ;
1752
+ serviceProvider . runCommand . onCall ( 2 ) . resolves ( { cloudFreeMonitoringEndpointURL : 'URL' } ) ;
1753
+ const result = await database . enableFreeMonitoring ( ) ;
1754
+ expect ( result ) . to . include ( 'URL' ) ;
1755
+ } ) ;
1756
+
1757
+ it ( 'returns warning if returns ok: 0 with auth error' , async ( ) => {
1758
+ serviceProvider . runCommand . onCall ( 0 ) . resolves ( { ismaster : true } ) ;
1759
+ serviceProvider . runCommand . onCall ( 1 ) . resolves ( { ok : 0 , codeName : 'Unauthorized' } ) ;
1760
+ const result = await database . enableFreeMonitoring ( ) ;
1761
+ expect ( result ) . to . be . a ( 'string' ) ;
1762
+ expect ( result ) . to . include ( 'privilege' ) ;
1763
+ } ) ;
1764
+ it ( 'returns warning if throws with auth error' , async ( ) => {
1765
+ const expectedError = new Error ( ) ;
1766
+ ( expectedError as any ) . codeName = 'Unauthorized' ;
1767
+ serviceProvider . runCommand . onCall ( 0 ) . resolves ( { ismaster : true } ) ;
1768
+ serviceProvider . runCommand . onCall ( 1 ) . rejects ( expectedError ) ;
1769
+ const result = await database . enableFreeMonitoring ( ) ;
1770
+ expect ( result ) . to . be . a ( 'string' ) ;
1771
+ expect ( result ) . to . include ( 'privilege' ) ;
1772
+ } ) ;
1773
+
1774
+ it ( 'throws if serviceProvider.runCommand rejects without auth error' , async ( ) => {
1775
+ const expectedError = new Error ( ) ;
1776
+ serviceProvider . runCommand . rejects ( expectedError ) ;
1777
+ const catchedError = await database . enableFreeMonitoring ( )
1778
+ . catch ( e => e ) ;
1779
+ expect ( catchedError ) . to . equal ( expectedError ) ;
1780
+ } ) ;
1781
+ } ) ;
1660
1782
} ) ;
1661
1783
} ) ;
1662
1784
0 commit comments