blob: 7a39e8cb23074a7fb872444420f1e9fe3daec0db [file] [log] [blame]
# encoding: utf-8
# frozen_string_literal: true
require 'spec_helper'
require 'whimsy/asf'
require 'whimsy/asf/mlist' # not loaded by default
describe ASF::MLIST do
describe "ASF::MLIST.members_subscribers" do
it "should return an array of members@ subscribers followed by the file update time" do
res = ASF::MLIST.members_subscribers()
expect(res.class).to eq(Array)
expect(res.length).to eq(2)
subs,stamp = res
expect(subs.class).to eq(Array)
expect(stamp.class).to eq(Time)
expect(subs.length).to be_between(500, 1000).inclusive
end
end
describe "ASF::MLIST.list_archivers" do
it "should return array of form [dom, list, [[archiver, type, alias|direct],...]" do
ASF::MLIST.list_archivers do |res|
expect(res.class).to eq(Array)
expect(res.length).to eq(3)
dom,list,arches = res # unpack
expect(dom.class).to eq(String)
expect(list.class).to eq(String)
expect(arches.class).to eq(Array)
arches.each do |arch|
expect(arch.length).to eq(3)
end
end
end
end
describe "ASF::MLIST.moderates(user_emails, response)" do
it "should not find any entries for invalid emails" do
user_emails=['user@localhost', 'user@domain.invalid']
res = ASF::MLIST.moderates(user_emails)
expect(res.length).to eq(2)
mods = res[:moderates]
expect(mods.length).to eq(0)
end
it "should find some entries for mod-private@gsuite.cloud.apache.org" do
user_emails=['mod-private@gsuite.cloud.apache.org']
res = ASF::MLIST.moderates(user_emails)
expect(res.length).to eq(2)
mods = res[:moderates]
expect(mods.length).to be_between(8, 20)
end
end
describe "ASF::MLIST.subscriptions(user_emails, response)" do
it "should not find any entries for invalid emails" do
user_emails=['user@localhost', 'user@domain.invalid']
res = ASF::MLIST.subscriptions(user_emails)
expect(res.length).to eq(2)
mods = res[:subscriptions]
expect(mods.length).to eq(0)
end
end
it "should find lots of entries for archiver@mbox-vm.apache.org" do
user_emails=['archiver@mbox-vm.apache.org']
res = ASF::MLIST.subscriptions(user_emails)
expect(res.length).to eq(2)
mods = res[:subscriptions]
expect(mods.length).to be_between(1000, 1200)
end
describe "ASF::MLIST.each_list" do
it "should return an array of form [[dom, list],...]" do
ASF::MLIST.each_list do |res|
expect(res.class).to eq(Array)
expect(res.length).to eq(2)
dom,list = res # unpack
expect(dom.class).to eq(String)
expect(list.class).to eq(String)
expect(dom).to match(/^[a-z.0-9-]+\.[a-z]+$/)
expect(list).to match(/^[a-z0-9-]+$/)
end
end
end
end