Home Reference Source Test Repository

test/link.test.js

/* eslint-env mocha */

import { expect } from 'chai'
import _ from 'lodash'
import faker from 'faker'

import { sqoopClient, generateMysqlConfig, generateHdfsConfig } from './index'

suite('link', () => {
  let firstMysqlLinkName
  let secondMysqlLinkName
  let firstHdfsLinkName

  before(() => {
    firstMysqlLinkName = faker.name.findName()
    secondMysqlLinkName = faker.name.findName()
    firstHdfsLinkName = faker.name.findName()
  })

  test('createLinkForMysql', async () => {
    const config = generateMysqlConfig(firstMysqlLinkName)
    const data = await sqoopClient.createLink(config)
    expect(data.name).to.equal(firstMysqlLinkName)
    expect(_.get(data, 'validation-result[0]')).to.be.empty
  })

  test('createLinkForHdfs', async () => {
    const config = generateHdfsConfig(firstHdfsLinkName)
    const data = await sqoopClient.createLink(config)
    expect(data.name).to.equal(firstHdfsLinkName)
    expect(_.get(data, 'validation-result[0]')).to.be.empty
  })

  test('updateLinkForMysql and getLinkByLinkName', async () => {
    const config = generateMysqlConfig(secondMysqlLinkName)
    const updateData = await sqoopClient.updateLinkConfig(firstMysqlLinkName, config)
    expect(_.get(updateData, 'validation-result[0]')).to.be.empty
    const data = await sqoopClient.getLinkByLinkName(secondMysqlLinkName)
    expect(_.get(data, 'links[0].name')).to.equal(secondMysqlLinkName)
  })

  test('getLinkByConnectorName', async () => {
    const connectorName = 'generic-jdbc-connector'
    const data = await sqoopClient.getLinkByConnectorName(connectorName)
    const linkNames = _.map(data.links, 'name')
    expect(secondMysqlLinkName).to.be.oneOf(linkNames)
  })

  test('updateLinkDisable', async () => {
    await sqoopClient.updateLinkDisable(secondMysqlLinkName)
    const data = await sqoopClient.getLinkByLinkName(secondMysqlLinkName)
    expect(_.get(data, 'links[0].enabled')).to.be.false
  })

  test('updateLinkEnable', async () => {
    await sqoopClient.updateLinkEnable(secondMysqlLinkName)
    const data = await sqoopClient.getLinkByLinkName(secondMysqlLinkName)
    expect(_.get(data, 'links[0].enabled')).to.be.true
  })

  test('getLinkAll', async () => {
    const data = await sqoopClient.getLinkAll()
    const linkNames = _.map(data.links, 'name')
    expect(firstHdfsLinkName).to.be.oneOf(linkNames)
    expect(secondMysqlLinkName).to.be.oneOf(linkNames)
  })

  test('deleteLink', async () => {
    const hdfsData = await sqoopClient.deleteLink(firstHdfsLinkName)
    expect(hdfsData).to.be.empty
    const mysqlData = await sqoopClient.deleteLink(secondMysqlLinkName)
    expect(mysqlData).to.be.empty
  })
})