config_test.go 21 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052
  1. // Copyright 2019 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package config // import "miniflux.app/config"
  5. import (
  6. "os"
  7. "testing"
  8. )
  9. func TestDebugModeOn(t *testing.T) {
  10. os.Clearenv()
  11. os.Setenv("DEBUG", "1")
  12. opts, err := parse()
  13. if err != nil {
  14. t.Fatalf(`Parsing failure: %q`, err)
  15. }
  16. if !opts.HasDebugMode() {
  17. t.Fatalf(`Unexpected debug mode value, got "%v"`, opts.HasDebugMode())
  18. }
  19. }
  20. func TestDebugModeOff(t *testing.T) {
  21. os.Clearenv()
  22. opts, err := parse()
  23. if err != nil {
  24. t.Fatalf(`Parsing failure: %q`, err)
  25. }
  26. if opts.HasDebugMode() {
  27. t.Fatalf(`Unexpected debug mode value, got "%v"`, opts.HasDebugMode())
  28. }
  29. }
  30. func TestCustomBaseURL(t *testing.T) {
  31. os.Clearenv()
  32. os.Setenv("BASE_URL", "http://example.org")
  33. opts, err := parse()
  34. if err != nil {
  35. t.Fatalf(`Parsing failure: %q`, err)
  36. }
  37. if opts.BaseURL() != "http://example.org" {
  38. t.Fatalf(`Unexpected base URL, got "%s"`, opts.BaseURL())
  39. }
  40. if opts.RootURL() != "http://example.org" {
  41. t.Fatalf(`Unexpected root URL, got "%s"`, opts.RootURL())
  42. }
  43. if opts.BasePath() != "" {
  44. t.Fatalf(`Unexpected base path, got "%s"`, opts.BasePath())
  45. }
  46. }
  47. func TestCustomBaseURLWithTrailingSlash(t *testing.T) {
  48. os.Clearenv()
  49. os.Setenv("BASE_URL", "http://example.org/folder/")
  50. opts, err := parse()
  51. if err != nil {
  52. t.Fatalf(`Parsing failure: %q`, err)
  53. }
  54. if opts.BaseURL() != "http://example.org/folder" {
  55. t.Fatalf(`Unexpected base URL, got "%s"`, opts.BaseURL())
  56. }
  57. if opts.RootURL() != "http://example.org" {
  58. t.Fatalf(`Unexpected root URL, got "%s"`, opts.RootURL())
  59. }
  60. if opts.BasePath() != "/folder" {
  61. t.Fatalf(`Unexpected base path, got "%s"`, opts.BasePath())
  62. }
  63. }
  64. func TestBaseURLWithoutScheme(t *testing.T) {
  65. os.Clearenv()
  66. os.Setenv("BASE_URL", "example.org/folder/")
  67. _, err := parse()
  68. if err == nil {
  69. t.Fatalf(`Parsing must fail`)
  70. }
  71. }
  72. func TestBaseURLWithInvalidScheme(t *testing.T) {
  73. os.Clearenv()
  74. os.Setenv("BASE_URL", "ftp://example.org/folder/")
  75. _, err := parse()
  76. if err == nil {
  77. t.Fatalf(`Parsing must fail`)
  78. }
  79. }
  80. func TestInvalidBaseURL(t *testing.T) {
  81. os.Clearenv()
  82. os.Setenv("BASE_URL", "http://example|org")
  83. _, err := parse()
  84. if err == nil {
  85. t.Fatalf(`Parsing must fail`)
  86. }
  87. }
  88. func TestDefaultBaseURL(t *testing.T) {
  89. os.Clearenv()
  90. opts, err := parse()
  91. if err != nil {
  92. t.Fatalf(`Parsing failure: %q`, err)
  93. }
  94. if opts.BaseURL() != defaultBaseURL {
  95. t.Fatalf(`Unexpected base URL, got "%s"`, opts.BaseURL())
  96. }
  97. if opts.RootURL() != defaultBaseURL {
  98. t.Fatalf(`Unexpected root URL, got "%s"`, opts.RootURL())
  99. }
  100. if opts.BasePath() != "" {
  101. t.Fatalf(`Unexpected base path, got "%s"`, opts.BasePath())
  102. }
  103. }
  104. func TestDatabaseURL(t *testing.T) {
  105. os.Clearenv()
  106. os.Setenv("DATABASE_URL", "foobar")
  107. opts, err := parse()
  108. if err != nil {
  109. t.Fatalf(`Parsing failure: %q`, err)
  110. }
  111. expected := "foobar"
  112. result := opts.DatabaseURL()
  113. if result != expected {
  114. t.Fatalf(`Unexpected DATABASE_URL value, got %q instead of %q`, result, expected)
  115. }
  116. }
  117. func TestDefaultDatabaseURLValue(t *testing.T) {
  118. os.Clearenv()
  119. opts, err := parse()
  120. if err != nil {
  121. t.Fatalf(`Parsing failure: %q`, err)
  122. }
  123. expected := defaultDatabaseURL
  124. result := opts.DatabaseURL()
  125. if result != expected {
  126. t.Fatalf(`Unexpected DATABASE_URL value, got %q instead of %q`, result, expected)
  127. }
  128. }
  129. func TestDefaultDatabaseMaxConnsValue(t *testing.T) {
  130. os.Clearenv()
  131. opts, err := parse()
  132. if err != nil {
  133. t.Fatalf(`Parsing failure: %q`, err)
  134. }
  135. expected := defaultDatabaseMaxConns
  136. result := opts.DatabaseMaxConns()
  137. if result != expected {
  138. t.Fatalf(`Unexpected DATABASE_MAX_CONNS value, got %v instead of %v`, result, expected)
  139. }
  140. }
  141. func TestDatabaseMaxConns(t *testing.T) {
  142. os.Clearenv()
  143. os.Setenv("DATABASE_MAX_CONNS", "42")
  144. opts, err := parse()
  145. if err != nil {
  146. t.Fatalf(`Parsing failure: %q`, err)
  147. }
  148. expected := 42
  149. result := opts.DatabaseMaxConns()
  150. if result != expected {
  151. t.Fatalf(`Unexpected DATABASE_MAX_CONNS value, got %v instead of %v`, result, expected)
  152. }
  153. }
  154. func TestDefaultDatabaseMinConnsValue(t *testing.T) {
  155. os.Clearenv()
  156. opts, err := parse()
  157. if err != nil {
  158. t.Fatalf(`Parsing failure: %q`, err)
  159. }
  160. expected := defaultDatabaseMinConns
  161. result := opts.DatabaseMinConns()
  162. if result != expected {
  163. t.Fatalf(`Unexpected DATABASE_MIN_CONNS value, got %v instead of %v`, result, expected)
  164. }
  165. }
  166. func TestDatabaseMinConns(t *testing.T) {
  167. os.Clearenv()
  168. os.Setenv("DATABASE_MIN_CONNS", "42")
  169. opts, err := parse()
  170. if err != nil {
  171. t.Fatalf(`Parsing failure: %q`, err)
  172. }
  173. expected := 42
  174. result := opts.DatabaseMinConns()
  175. if result != expected {
  176. t.Fatalf(`Unexpected DATABASE_MIN_CONNS value, got %v instead of %v`, result, expected)
  177. }
  178. }
  179. func TestListenAddr(t *testing.T) {
  180. os.Clearenv()
  181. os.Setenv("LISTEN_ADDR", "foobar")
  182. opts, err := parse()
  183. if err != nil {
  184. t.Fatalf(`Parsing failure: %q`, err)
  185. }
  186. expected := "foobar"
  187. result := opts.ListenAddr()
  188. if result != expected {
  189. t.Fatalf(`Unexpected LISTEN_ADDR value, got %q instead of %q`, result, expected)
  190. }
  191. }
  192. func TestListenAddrWithPortDefined(t *testing.T) {
  193. os.Clearenv()
  194. os.Setenv("PORT", "3000")
  195. os.Setenv("LISTEN_ADDR", "foobar")
  196. opts, err := parse()
  197. if err != nil {
  198. t.Fatalf(`Parsing failure: %q`, err)
  199. }
  200. expected := ":3000"
  201. result := opts.ListenAddr()
  202. if result != expected {
  203. t.Fatalf(`Unexpected LISTEN_ADDR value, got %q instead of %q`, result, expected)
  204. }
  205. }
  206. func TestDefaultListenAddrValue(t *testing.T) {
  207. os.Clearenv()
  208. opts, err := parse()
  209. if err != nil {
  210. t.Fatalf(`Parsing failure: %q`, err)
  211. }
  212. expected := defaultListenAddr
  213. result := opts.ListenAddr()
  214. if result != expected {
  215. t.Fatalf(`Unexpected LISTEN_ADDR value, got %q instead of %q`, result, expected)
  216. }
  217. }
  218. func TestCertFile(t *testing.T) {
  219. os.Clearenv()
  220. os.Setenv("CERT_FILE", "foobar")
  221. opts, err := parse()
  222. if err != nil {
  223. t.Fatalf(`Parsing failure: %q`, err)
  224. }
  225. expected := "foobar"
  226. result := opts.CertFile()
  227. if result != expected {
  228. t.Fatalf(`Unexpected CERT_FILE value, got %q instead of %q`, result, expected)
  229. }
  230. }
  231. func TestDefaultCertFileValue(t *testing.T) {
  232. os.Clearenv()
  233. opts, err := parse()
  234. if err != nil {
  235. t.Fatalf(`Parsing failure: %q`, err)
  236. }
  237. expected := defaultCertFile
  238. result := opts.CertFile()
  239. if result != expected {
  240. t.Fatalf(`Unexpected CERT_FILE value, got %q instead of %q`, result, expected)
  241. }
  242. }
  243. func TestKeyFile(t *testing.T) {
  244. os.Clearenv()
  245. os.Setenv("KEY_FILE", "foobar")
  246. opts, err := parse()
  247. if err != nil {
  248. t.Fatalf(`Parsing failure: %q`, err)
  249. }
  250. expected := "foobar"
  251. result := opts.CertKeyFile()
  252. if result != expected {
  253. t.Fatalf(`Unexpected KEY_FILE value, got %q instead of %q`, result, expected)
  254. }
  255. }
  256. func TestDefaultKeyFileValue(t *testing.T) {
  257. os.Clearenv()
  258. opts, err := parse()
  259. if err != nil {
  260. t.Fatalf(`Parsing failure: %q`, err)
  261. }
  262. expected := defaultKeyFile
  263. result := opts.CertKeyFile()
  264. if result != expected {
  265. t.Fatalf(`Unexpected KEY_FILE value, got %q instead of %q`, result, expected)
  266. }
  267. }
  268. func TestCertDomain(t *testing.T) {
  269. os.Clearenv()
  270. os.Setenv("CERT_DOMAIN", "example.org")
  271. opts, err := parse()
  272. if err != nil {
  273. t.Fatalf(`Parsing failure: %q`, err)
  274. }
  275. expected := "example.org"
  276. result := opts.CertDomain()
  277. if result != expected {
  278. t.Fatalf(`Unexpected CERT_DOMAIN value, got %q instead of %q`, result, expected)
  279. }
  280. }
  281. func TestDefaultCertDomainValue(t *testing.T) {
  282. os.Clearenv()
  283. opts, err := parse()
  284. if err != nil {
  285. t.Fatalf(`Parsing failure: %q`, err)
  286. }
  287. expected := defaultCertDomain
  288. result := opts.CertDomain()
  289. if result != expected {
  290. t.Fatalf(`Unexpected CERT_DOMAIN value, got %q instead of %q`, result, expected)
  291. }
  292. }
  293. func TestCertCache(t *testing.T) {
  294. os.Clearenv()
  295. os.Setenv("CERT_CACHE", "foobar")
  296. opts, err := parse()
  297. if err != nil {
  298. t.Fatalf(`Parsing failure: %q`, err)
  299. }
  300. expected := "foobar"
  301. result := opts.CertCache()
  302. if result != expected {
  303. t.Fatalf(`Unexpected CERT_CACHE value, got %q instead of %q`, result, expected)
  304. }
  305. }
  306. func TestDefaultCertCacheValue(t *testing.T) {
  307. os.Clearenv()
  308. opts, err := parse()
  309. if err != nil {
  310. t.Fatalf(`Parsing failure: %q`, err)
  311. }
  312. expected := defaultCertCache
  313. result := opts.CertCache()
  314. if result != expected {
  315. t.Fatalf(`Unexpected CERT_CACHE value, got %q instead of %q`, result, expected)
  316. }
  317. }
  318. func TestDefaultCleanupFrequencyValue(t *testing.T) {
  319. os.Clearenv()
  320. opts, err := parse()
  321. if err != nil {
  322. t.Fatalf(`Parsing failure: %q`, err)
  323. }
  324. expected := defaultCleanupFrequency
  325. result := opts.CleanupFrequency()
  326. if result != expected {
  327. t.Fatalf(`Unexpected CLEANUP_FREQUENCY value, got %v instead of %v`, result, expected)
  328. }
  329. }
  330. func TestCleanupFrequency(t *testing.T) {
  331. os.Clearenv()
  332. os.Setenv("CLEANUP_FREQUENCY", "42")
  333. opts, err := parse()
  334. if err != nil {
  335. t.Fatalf(`Parsing failure: %q`, err)
  336. }
  337. expected := 42
  338. result := opts.CleanupFrequency()
  339. if result != expected {
  340. t.Fatalf(`Unexpected CLEANUP_FREQUENCY value, got %v instead of %v`, result, expected)
  341. }
  342. }
  343. func TestDefaultWorkerPoolSizeValue(t *testing.T) {
  344. os.Clearenv()
  345. opts, err := parse()
  346. if err != nil {
  347. t.Fatalf(`Parsing failure: %q`, err)
  348. }
  349. expected := defaultWorkerPoolSize
  350. result := opts.WorkerPoolSize()
  351. if result != expected {
  352. t.Fatalf(`Unexpected WORKER_POOL_SIZE value, got %v instead of %v`, result, expected)
  353. }
  354. }
  355. func TestWorkerPoolSize(t *testing.T) {
  356. os.Clearenv()
  357. os.Setenv("WORKER_POOL_SIZE", "42")
  358. opts, err := parse()
  359. if err != nil {
  360. t.Fatalf(`Parsing failure: %q`, err)
  361. }
  362. expected := 42
  363. result := opts.WorkerPoolSize()
  364. if result != expected {
  365. t.Fatalf(`Unexpected WORKER_POOL_SIZE value, got %v instead of %v`, result, expected)
  366. }
  367. }
  368. func TestDefautPollingFrequencyValue(t *testing.T) {
  369. os.Clearenv()
  370. opts, err := parse()
  371. if err != nil {
  372. t.Fatalf(`Parsing failure: %q`, err)
  373. }
  374. expected := defaultPollingFrequency
  375. result := opts.PollingFrequency()
  376. if result != expected {
  377. t.Fatalf(`Unexpected POLLING_FREQUENCY value, got %v instead of %v`, result, expected)
  378. }
  379. }
  380. func TestPollingFrequency(t *testing.T) {
  381. os.Clearenv()
  382. os.Setenv("POLLING_FREQUENCY", "42")
  383. opts, err := parse()
  384. if err != nil {
  385. t.Fatalf(`Parsing failure: %q`, err)
  386. }
  387. expected := 42
  388. result := opts.PollingFrequency()
  389. if result != expected {
  390. t.Fatalf(`Unexpected POLLING_FREQUENCY value, got %v instead of %v`, result, expected)
  391. }
  392. }
  393. func TestDefaultBatchSizeValue(t *testing.T) {
  394. os.Clearenv()
  395. opts, err := parse()
  396. if err != nil {
  397. t.Fatalf(`Parsing failure: %q`, err)
  398. }
  399. expected := defaultBatchSize
  400. result := opts.BatchSize()
  401. if result != expected {
  402. t.Fatalf(`Unexpected BATCH_SIZE value, got %v instead of %v`, result, expected)
  403. }
  404. }
  405. func TestBatchSize(t *testing.T) {
  406. os.Clearenv()
  407. os.Setenv("BATCH_SIZE", "42")
  408. opts, err := parse()
  409. if err != nil {
  410. t.Fatalf(`Parsing failure: %q`, err)
  411. }
  412. expected := 42
  413. result := opts.BatchSize()
  414. if result != expected {
  415. t.Fatalf(`Unexpected BATCH_SIZE value, got %v instead of %v`, result, expected)
  416. }
  417. }
  418. func TestOAuth2UserCreationWhenUnset(t *testing.T) {
  419. os.Clearenv()
  420. opts, err := parse()
  421. if err != nil {
  422. t.Fatalf(`Parsing failure: %q`, err)
  423. }
  424. expected := false
  425. result := opts.IsOAuth2UserCreationAllowed()
  426. if result != expected {
  427. t.Fatalf(`Unexpected OAUTH2_USER_CREATION value, got %v instead of %v`, result, expected)
  428. }
  429. }
  430. func TestOAuth2UserCreationAdmin(t *testing.T) {
  431. os.Clearenv()
  432. os.Setenv("OAUTH2_USER_CREATION", "1")
  433. opts, err := parse()
  434. if err != nil {
  435. t.Fatalf(`Parsing failure: %q`, err)
  436. }
  437. expected := true
  438. result := opts.IsOAuth2UserCreationAllowed()
  439. if result != expected {
  440. t.Fatalf(`Unexpected OAUTH2_USER_CREATION value, got %v instead of %v`, result, expected)
  441. }
  442. }
  443. func TestOAuth2ClientID(t *testing.T) {
  444. os.Clearenv()
  445. os.Setenv("OAUTH2_CLIENT_ID", "foobar")
  446. opts, err := parse()
  447. if err != nil {
  448. t.Fatalf(`Parsing failure: %q`, err)
  449. }
  450. expected := "foobar"
  451. result := opts.OAuth2ClientID()
  452. if result != expected {
  453. t.Fatalf(`Unexpected OAUTH2_CLIENT_ID value, got %q instead of %q`, result, expected)
  454. }
  455. }
  456. func TestDefaultOAuth2ClientIDValue(t *testing.T) {
  457. os.Clearenv()
  458. opts, err := parse()
  459. if err != nil {
  460. t.Fatalf(`Parsing failure: %q`, err)
  461. }
  462. expected := defaultOAuth2ClientID
  463. result := opts.OAuth2ClientID()
  464. if result != expected {
  465. t.Fatalf(`Unexpected OAUTH2_CLIENT_ID value, got %q instead of %q`, result, expected)
  466. }
  467. }
  468. func TestOAuth2ClientSecret(t *testing.T) {
  469. os.Clearenv()
  470. os.Setenv("OAUTH2_CLIENT_SECRET", "secret")
  471. opts, err := parse()
  472. if err != nil {
  473. t.Fatalf(`Parsing failure: %q`, err)
  474. }
  475. expected := "secret"
  476. result := opts.OAuth2ClientSecret()
  477. if result != expected {
  478. t.Fatalf(`Unexpected OAUTH2_CLIENT_SECRET value, got %q instead of %q`, result, expected)
  479. }
  480. }
  481. func TestDefaultOAuth2ClientSecretValue(t *testing.T) {
  482. os.Clearenv()
  483. opts, err := parse()
  484. if err != nil {
  485. t.Fatalf(`Parsing failure: %q`, err)
  486. }
  487. expected := defaultOAuth2ClientSecret
  488. result := opts.OAuth2ClientSecret()
  489. if result != expected {
  490. t.Fatalf(`Unexpected OAUTH2_CLIENT_SECRET value, got %q instead of %q`, result, expected)
  491. }
  492. }
  493. func TestOAuth2RedirectURL(t *testing.T) {
  494. os.Clearenv()
  495. os.Setenv("OAUTH2_REDIRECT_URL", "http://example.org")
  496. opts, err := parse()
  497. if err != nil {
  498. t.Fatalf(`Parsing failure: %q`, err)
  499. }
  500. expected := "http://example.org"
  501. result := opts.OAuth2RedirectURL()
  502. if result != expected {
  503. t.Fatalf(`Unexpected OAUTH2_REDIRECT_URL value, got %q instead of %q`, result, expected)
  504. }
  505. }
  506. func TestDefaultOAuth2RedirectURLValue(t *testing.T) {
  507. os.Clearenv()
  508. opts, err := parse()
  509. if err != nil {
  510. t.Fatalf(`Parsing failure: %q`, err)
  511. }
  512. expected := defaultOAuth2RedirectURL
  513. result := opts.OAuth2RedirectURL()
  514. if result != expected {
  515. t.Fatalf(`Unexpected OAUTH2_REDIRECT_URL value, got %q instead of %q`, result, expected)
  516. }
  517. }
  518. func TestOAuth2Provider(t *testing.T) {
  519. os.Clearenv()
  520. os.Setenv("OAUTH2_PROVIDER", "google")
  521. opts, err := parse()
  522. if err != nil {
  523. t.Fatalf(`Parsing failure: %q`, err)
  524. }
  525. expected := "google"
  526. result := opts.OAuth2Provider()
  527. if result != expected {
  528. t.Fatalf(`Unexpected OAUTH2_PROVIDER value, got %q instead of %q`, result, expected)
  529. }
  530. }
  531. func TestDefaultOAuth2ProviderValue(t *testing.T) {
  532. os.Clearenv()
  533. opts, err := parse()
  534. if err != nil {
  535. t.Fatalf(`Parsing failure: %q`, err)
  536. }
  537. expected := defaultOAuth2Provider
  538. result := opts.OAuth2Provider()
  539. if result != expected {
  540. t.Fatalf(`Unexpected OAUTH2_PROVIDER value, got %q instead of %q`, result, expected)
  541. }
  542. }
  543. func TestHSTSWhenUnset(t *testing.T) {
  544. os.Clearenv()
  545. opts, err := parse()
  546. if err != nil {
  547. t.Fatalf(`Parsing failure: %q`, err)
  548. }
  549. expected := true
  550. result := opts.HasHSTS()
  551. if result != expected {
  552. t.Fatalf(`Unexpected DISABLE_HSTS value, got %v instead of %v`, result, expected)
  553. }
  554. }
  555. func TestHSTS(t *testing.T) {
  556. os.Clearenv()
  557. os.Setenv("DISABLE_HSTS", "1")
  558. opts, err := parse()
  559. if err != nil {
  560. t.Fatalf(`Parsing failure: %q`, err)
  561. }
  562. expected := false
  563. result := opts.HasHSTS()
  564. if result != expected {
  565. t.Fatalf(`Unexpected DISABLE_HSTS value, got %v instead of %v`, result, expected)
  566. }
  567. }
  568. func TestDisableHTTPServiceWhenUnset(t *testing.T) {
  569. os.Clearenv()
  570. opts, err := parse()
  571. if err != nil {
  572. t.Fatalf(`Parsing failure: %q`, err)
  573. }
  574. expected := true
  575. result := opts.HasHTTPService()
  576. if result != expected {
  577. t.Fatalf(`Unexpected DISABLE_HTTP_SERVICE value, got %v instead of %v`, result, expected)
  578. }
  579. }
  580. func TestDisableHTTPService(t *testing.T) {
  581. os.Clearenv()
  582. os.Setenv("DISABLE_HTTP_SERVICE", "1")
  583. opts, err := parse()
  584. if err != nil {
  585. t.Fatalf(`Parsing failure: %q`, err)
  586. }
  587. expected := false
  588. result := opts.HasHTTPService()
  589. if result != expected {
  590. t.Fatalf(`Unexpected DISABLE_HTTP_SERVICE value, got %v instead of %v`, result, expected)
  591. }
  592. }
  593. func TestDisableSchedulerServiceWhenUnset(t *testing.T) {
  594. os.Clearenv()
  595. opts, err := parse()
  596. if err != nil {
  597. t.Fatalf(`Parsing failure: %q`, err)
  598. }
  599. expected := true
  600. result := opts.HasSchedulerService()
  601. if result != expected {
  602. t.Fatalf(`Unexpected DISABLE_SCHEDULER_SERVICE value, got %v instead of %v`, result, expected)
  603. }
  604. }
  605. func TestDisableSchedulerService(t *testing.T) {
  606. os.Clearenv()
  607. os.Setenv("DISABLE_SCHEDULER_SERVICE", "1")
  608. opts, err := parse()
  609. if err != nil {
  610. t.Fatalf(`Parsing failure: %q`, err)
  611. }
  612. expected := false
  613. result := opts.HasSchedulerService()
  614. if result != expected {
  615. t.Fatalf(`Unexpected DISABLE_SCHEDULER_SERVICE value, got %v instead of %v`, result, expected)
  616. }
  617. }
  618. func TestArchiveReadDays(t *testing.T) {
  619. os.Clearenv()
  620. os.Setenv("ARCHIVE_READ_DAYS", "7")
  621. opts, err := parse()
  622. if err != nil {
  623. t.Fatalf(`Parsing failure: %q`, err)
  624. }
  625. expected := 7
  626. result := opts.ArchiveReadDays()
  627. if result != expected {
  628. t.Fatalf(`Unexpected ARCHIVE_READ_DAYS value, got %v instead of %v`, result, expected)
  629. }
  630. }
  631. func TestRunMigrationsWhenUnset(t *testing.T) {
  632. os.Clearenv()
  633. opts, err := parse()
  634. if err != nil {
  635. t.Fatalf(`Parsing failure: %q`, err)
  636. }
  637. expected := false
  638. result := opts.RunMigrations()
  639. if result != expected {
  640. t.Fatalf(`Unexpected RUN_MIGRATIONS value, got %v instead of %v`, result, expected)
  641. }
  642. }
  643. func TestRunMigrations(t *testing.T) {
  644. os.Clearenv()
  645. os.Setenv("RUN_MIGRATIONS", "yes")
  646. opts, err := parse()
  647. if err != nil {
  648. t.Fatalf(`Parsing failure: %q`, err)
  649. }
  650. expected := true
  651. result := opts.RunMigrations()
  652. if result != expected {
  653. t.Fatalf(`Unexpected RUN_MIGRATIONS value, got %v instead of %v`, result, expected)
  654. }
  655. }
  656. func TestCreateAdminWhenUnset(t *testing.T) {
  657. os.Clearenv()
  658. opts, err := parse()
  659. if err != nil {
  660. t.Fatalf(`Parsing failure: %q`, err)
  661. }
  662. expected := false
  663. result := opts.CreateAdmin()
  664. if result != expected {
  665. t.Fatalf(`Unexpected CREATE_ADMIN value, got %v instead of %v`, result, expected)
  666. }
  667. }
  668. func TestCreateAdmin(t *testing.T) {
  669. os.Clearenv()
  670. os.Setenv("CREATE_ADMIN", "true")
  671. opts, err := parse()
  672. if err != nil {
  673. t.Fatalf(`Parsing failure: %q`, err)
  674. }
  675. expected := true
  676. result := opts.CreateAdmin()
  677. if result != expected {
  678. t.Fatalf(`Unexpected CREATE_ADMIN value, got %v instead of %v`, result, expected)
  679. }
  680. }
  681. func TestPocketConsumerKeyFromEnvVariable(t *testing.T) {
  682. os.Clearenv()
  683. os.Setenv("POCKET_CONSUMER_KEY", "something")
  684. opts, err := parse()
  685. if err != nil {
  686. t.Fatalf(`Parsing failure: %q`, err)
  687. }
  688. expected := "something"
  689. result := opts.PocketConsumerKey("default")
  690. if result != expected {
  691. t.Fatalf(`Unexpected POCKET_CONSUMER_KEY value, got %q instead of %q`, result, expected)
  692. }
  693. }
  694. func TestPocketConsumerKeyFromUserPrefs(t *testing.T) {
  695. os.Clearenv()
  696. opts, err := parse()
  697. if err != nil {
  698. t.Fatalf(`Parsing failure: %q`, err)
  699. }
  700. expected := "default"
  701. result := opts.PocketConsumerKey("default")
  702. if result != expected {
  703. t.Fatalf(`Unexpected POCKET_CONSUMER_KEY value, got %q instead of %q`, result, expected)
  704. }
  705. }
  706. func TestProxyImages(t *testing.T) {
  707. os.Clearenv()
  708. os.Setenv("PROXY_IMAGES", "all")
  709. opts, err := parse()
  710. if err != nil {
  711. t.Fatalf(`Parsing failure: %q`, err)
  712. }
  713. expected := "all"
  714. result := opts.ProxyImages()
  715. if result != expected {
  716. t.Fatalf(`Unexpected PROXY_IMAGES value, got %q instead of %q`, result, expected)
  717. }
  718. }
  719. func TestDefaultProxyImagesValue(t *testing.T) {
  720. os.Clearenv()
  721. opts, err := parse()
  722. if err != nil {
  723. t.Fatalf(`Parsing failure: %q`, err)
  724. }
  725. expected := defaultProxyImages
  726. result := opts.ProxyImages()
  727. if result != expected {
  728. t.Fatalf(`Unexpected PROXY_IMAGES value, got %q instead of %q`, result, expected)
  729. }
  730. }
  731. func TestHTTPSOff(t *testing.T) {
  732. os.Clearenv()
  733. opts, err := parse()
  734. if err != nil {
  735. t.Fatalf(`Parsing failure: %q`, err)
  736. }
  737. if opts.HTTPS {
  738. t.Fatalf(`Unexpected HTTPS value, got "%v"`, opts.HTTPS)
  739. }
  740. }
  741. func TestHTTPSOn(t *testing.T) {
  742. os.Clearenv()
  743. os.Setenv("HTTPS", "on")
  744. opts, err := parse()
  745. if err != nil {
  746. t.Fatalf(`Parsing failure: %q`, err)
  747. }
  748. if !opts.HTTPS {
  749. t.Fatalf(`Unexpected HTTPS value, got "%v"`, opts.HTTPS)
  750. }
  751. }
  752. func TestHTTPClientTimeout(t *testing.T) {
  753. os.Clearenv()
  754. os.Setenv("HTTP_CLIENT_TIMEOUT", "42")
  755. opts, err := parse()
  756. if err != nil {
  757. t.Fatalf(`Parsing failure: %q`, err)
  758. }
  759. expected := 42
  760. result := opts.HTTPClientTimeout()
  761. if result != expected {
  762. t.Fatalf(`Unexpected HTTP_CLIENT_TIMEOUT value, got %d instead of %d`, result, expected)
  763. }
  764. }
  765. func TestDefaultHTTPClientTimeoutValue(t *testing.T) {
  766. os.Clearenv()
  767. opts, err := parse()
  768. if err != nil {
  769. t.Fatalf(`Parsing failure: %q`, err)
  770. }
  771. expected := defaultHTTPClientTimeout
  772. result := opts.HTTPClientTimeout()
  773. if result != expected {
  774. t.Fatalf(`Unexpected HTTP_CLIENT_TIMEOUT value, got %d instead of %d`, result, expected)
  775. }
  776. }
  777. func TestHTTPClientMaxBodySize(t *testing.T) {
  778. os.Clearenv()
  779. os.Setenv("HTTP_CLIENT_MAX_BODY_SIZE", "42")
  780. opts, err := parse()
  781. if err != nil {
  782. t.Fatalf(`Parsing failure: %q`, err)
  783. }
  784. expected := int64(42 * 1024 * 1024)
  785. result := opts.HTTPClientMaxBodySize()
  786. if result != expected {
  787. t.Fatalf(`Unexpected HTTP_CLIENT_MAX_BODY_SIZE value, got %d instead of %d`, result, expected)
  788. }
  789. }
  790. func TestDefaultHTTPClientMaxBodySizeValue(t *testing.T) {
  791. os.Clearenv()
  792. opts, err := parse()
  793. if err != nil {
  794. t.Fatalf(`Parsing failure: %q`, err)
  795. }
  796. expected := int64(defaultHTTPClientMaxBodySize * 1024 * 1024)
  797. result := opts.HTTPClientMaxBodySize()
  798. if result != expected {
  799. t.Fatalf(`Unexpected HTTP_CLIENT_MAX_BODY_SIZE value, got %d instead of %d`, result, expected)
  800. }
  801. }